我正在使用 commonware 的相机示例来尝试创建一个拍照的 android 应用程序。预览显示相机旋转了 90 度,我通过应用进行了纠正:
camera.setDisplayOrientation(90);
但是,图像仍以另一种方式旋转 90 度保存。我该如何调整它,以便在保存图像时,它们保存在与查看器相同的“方面”?
请告知,TIA
我正在使用 commonware 的相机示例来尝试创建一个拍照的 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;
}