我在Android 8.1上拍摄照片时出现问题,并且无法正确旋转。
这是我的代码:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode == RESULT_OK && requestCode == CAMERA_REQUEST_CODE) {
ExifInterface exif = null;
try {
exif = new ExifInterface(imageFile.getAbsolutePath());
} catch (IOException e) {
logger.error("Error ExifInterface", e);
}
int rotation = 0;
if (exif != null) {
if (exif.getAttribute(ExifInterface.TAG_ORIENTATION).equalsIgnoreCase("6")) {
rotation = 90; // When using the device in portrait, it passes here.
} else if (exif.getAttribute(ExifInterface.TAG_ORIENTATION).equalsIgnoreCase("8")) {
rotation = 270;
} else if (exif.getAttribute(ExifInterface.TAG_ORIENTATION).equalsIgnoreCase("3")) {
rotation = 180;
} else if (exif.getAttribute(ExifInterface.TAG_ORIENTATION).equalsIgnoreCase("0")) {
rotation = 90;
}
}
bmp = ImageUtils.decodeFile(imageFile);
if (rotation != 0) {
Bitmap rotated = ImageUtils.rotate(bmp, rotation);
bmp.recycle();
bmp = rotated;
}
// here I use the image...
}
}
它可以在我拥有的其他设备(Android 7.0、6.0和5.1)上运行。但是在Android 8.1上无法使用。
以人像拍摄时,ExifInterface.TAG_ORIENTATION返回6。这意味着旋转90度。但是结果图像看起来像这样:
我以肖像照了这张照片。在Android 8之前,它可以正常运行。但是在Android 8.1上看起来像这样。
知道为什么吗?也许在Android 8上,我不必以编程方式旋转它?