Camera2APIで撮影した画像の向きを取得する方法
Camera2 APIを使用しています。
撮影をした後に画像の向きを取得して、正しい位置に修正したいのですが、うまいやり方が見つかりません。
現在は下記のようにして、向きを修正しています。
public ImageStore(Image image, File file, Context con, int cameraDirec) {
mImage = image;
mFile = file;
this.context = con;
this.camDirection = cameraDirec;
}
@Override
public void run() {
Bitmap bmp = null;
ByteBuffer buffer = mImage.getPlanes()[0].getBuffer();
byte[] bytes = new byte[buffer.remaining()];
buffer.get(bytes);
try {
bmp = BitmapFactory.decodeByteArray(bytes, 0, bytes.length, null);
}catch (Exception e){
e.printStackTrace();
}
Matrix m;
if(bmp.getWidth() > bmp.getHeight()) {
if (camDirection == FRONT_CAMERA) {
m = new Matrix();
m.setRotate(270);
bmp = Bitmap.createBitmap(bmp, 0, 0, bmp.getWidth(), bmp.getHeight(), m, true);
} else {
m = new Matrix();
m.setRotate(90);
bmp = Bitmap.createBitmap(bmp, 0, 0, bmp.getWidth(), bmp.getHeight(), m, true);
}
}
}
上記のやり方ですと、機種によってはうまくいかないことがありまして、もし可能なら現在の向きを取得できるようにしたいです。
ExifInterfaceを使用できればと思ったのですが、ファイルに保存しているわけではないせいなのか、うまく取得ができませんでした。
お詳しい方いましたらよろしくお願い致します。
追記
一応無理やりですが自己解決いたしました。
ギャラリーには撮った写真を残したくなかったのですが、Exif情報が欲しかったため、一時的にギャラリーに保存してから、再度ギャラリーから取得して、Exif情報取得しました。
Exif情報を取得できたらギャラリーから画像を削除するという、ちょっと無理やりですが、このような仕様にしました。
引き続き良い方法ありましたらよろしくお願い致します。