ExifInterface在api 27上不起作用

时间:2018-08-07 19:56:49

标签: android

我在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度。但是结果图像看起来像这样:

enter image description here

我以肖像照了这张照片。在Android 8之前,它可以正常运行。但是在Android 8.1上看起来像这样。

知道为什么吗?也许在Android 8上,我不必以编程方式旋转它?

0 个答案:

没有答案