当使用相机拍照后,图像在某些设备上会出现旋转的问题,这是由于不同设备上辅助传感器的方向不同所致。解决这个问题的方法是在拍摄之后使用 ExifInterface 类中的 setAttribute() 方法将图像的方向进行设置。下面是示例代码:
private void rotateImage(File file) {
try {
// 读取图片方向信息
ExifInterface exif = new ExifInterface(file.getAbsolutePath());
int orientation = exif.getAttributeInt(ExifInterface.TAG_ORIENTATION, ExifInterface.ORIENTATION_UNDEFINED);
// 根据方向进行旋转操作
Matrix matrix = new Matrix();
switch (orientation) {
case ExifInterface.ORIENTATION_ROTATE_90:
matrix.postRotate(90);
break;
case ExifInterface.ORIENTATION_ROTATE_180:
matrix.postRotate(180);
break;
case ExifInterface.ORIENTATION_ROTATE_270:
matrix.postRotate(270);
break;
default:
return;
}
// 将旋转后的图像保存到文件中
Bitmap bitmap = BitmapFactory.decodeFile(file.getAbsolutePath());
Bitmap rotatedBitmap = Bitmap.createBitmap(bitmap, 0, 0, bitmap.getWidth(), bitmap.getHeight(), matrix, true);
FileOutputStream outputStream = new FileOutputStream(file);
rotatedBitmap.compress(Bitmap.CompressFormat.JPEG, 100, outputStream);
outputStream.flush();
outputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}