写真を撮って正方形にトリミングするために使用するカスタム カメラ アプリケーションがあります。最終的な出力画像 (特に向き) の Exif データを書き込む方法を知りたいです。
私のコードの重要な部分は次のとおりです。
captureButton = (Button) findViewById(R.id.button_capture);
captureButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// Take a picture
mCamera.takePicture(null, null, mPicture);
}
});
これがコールバック関数です。
PictureCallback mPicture = new PictureCallback() {
@Override
public void onPictureTaken(byte[] data, Camera camera) {
File pictureFile = getOutputMediaFile();
if (pictureFile == null) {
return;
}
try {
FileOutputStream fos = new FileOutputStream(pictureFile);
fos.write(data);
fos.close();
} catch (FileNotFoundException e) {
} catch (IOException e) {
}
}
};
更新: onPictureTaken メソッドに以下を追加しましたが、何も変更されていません:
ExifInterface exif;
exif = new ExifInterface(pictureFile.getAbsolutePath());
// Notice getOrientation method gets an Integer with the angle : 0 , 90 , 180 , 270 ..etc
exif.setAttribute(ExifInterface.TAG_ORIENTATION, String.valueOf(getOrientation()) );
exif.saveAttributes();