コモンウェアのカメラ サンプルを使用して、写真を撮る Android アプリを作成しようとしています。プレビューは、カメラが 90 度回転したことを示しており、以下を適用して修正しました。
camera.setDisplayOrientation(90);
ただし、画像は逆に 90 度回転して保存されます。画像が保存されるときに、ビューアーと同じ「アスペクト」で保存されるように、これを調整するにはどうすればよいですか?
教えてください、TIA
コモンウェアのカメラ サンプルを使用して、写真を撮る Android アプリを作成しようとしています。プレビューは、カメラが 90 度回転したことを示しており、以下を適用して修正しました。
camera.setDisplayOrientation(90);
ただし、画像は逆に 90 度回転して保存されます。画像が保存されるときに、ビューアーと同じ「アスペクト」で保存されるように、これを調整するにはどうすればよいですか?
教えてください、TIA
この投稿によると、これは一部のデバイスでのみ発生し、メーカーによって異なります。
次のように、デバイスの向きの角度を検出し、それに応じて回転を適用することで、この問題を回避することができました。
ExifInterface exitInterface = new ExifInterface(imagePath);
int orientation = exitInterface.getAttributeInt(ExifInterface.TAG_ORIENTATION, ExifInterface.ORIENTATION_UNDEFINED);
int degree = 0;
switch (orientation){
case ExifInterface.ORIENTATION_ROTATE_90:
degree = 90;
break;
case ExifInterface.ORIENTATION_ROTATE_180:
degree = 180;
break;
case ExifInterface.ORIENTATION_ROTATE_270:
degree = 270;
break;
}
次に、カスタム メソッドを使用してビットマップを回転させます。
public static Bitmap rotateImage(Bitmap src, float degree)
{
// create new matrix
Matrix matrix = new Matrix();
// setup rotation degree
matrix.postRotate(degree);
Bitmap bmp = Bitmap.createBitmap(src, 0, 0, src.getWidth(), src.getHeight(), matrix, true);
return bmp;
}