【问题标题】:EXIF orientation is always default valueEXIF 方向始终是默认值
【发布时间】:2014-10-15 22:37:46
【问题描述】:

我知道这个问题之前已经讨论过很多次了,我也看过很多问题和很多答案,但我尝试过都无济于事,要么是因为我缺乏理解,要么是我的设备。另外,大多数问题现在已经过时了。我遇到了纵向图像旋转到横向的经典问题。

无论如何,我有一个正在使用的自定义相机。这是我主要活动中的一个功能:

public static int getImageOrientation(String imagePath){
     int orientation = -1;
        try {
            ExifInterface exif = new ExifInterface(imagePath);
            int exifOrientation = exif.getAttributeInt(ExifInterface.TAG_ORIENTATION, 
                    ExifInterface.ORIENTATION_NORMAL);

            switch (exifOrientation) {
                case ExifInterface.ORIENTATION_ROTATE_270:
                    orientation = 270;

                    break;
                case ExifInterface.ORIENTATION_ROTATE_180:
                    orientation = 180;

                    break;
                case ExifInterface.ORIENTATION_ROTATE_90:
                    orientation = 90;

                    break;

                case ExifInterface.ORIENTATION_NORMAL:
                    orientation = 0;

                    break;
                default:
                    break;
            }
        } catch (IOException e) {
            Log.e("LOG_TAG", "Unable to get image exif orientation", e);
        }

        return orientation;
 }

这个函数在我的 onactivityresult 中被调用:

    String abspath = data.getExtras().getString(EXTRA_IMAGE_PATH);
    mMediaUri = Uri.fromFile(new File(abspath));
    rotation = getImageOrientation(abspath);

现在,我要做的是,我将旋转存储在我的后端,这样当图像出现在列表视图中时,它就会知道是否要旋转。问题是 -1 不断被返回。我可能做错了什么?我只想知道这张照片是纵向还是横向拍摄的。

【问题讨论】:

  • 每台设备上都会发生这种情况吗?
  • 嘿,这发生在我的三星 Galaxy S4、Genymotion 的 Google Galaxy Nexus 和 Nexus 7 模拟器上。

标签: android android-camera photo


【解决方案1】:

exif.getAttributeInt() 返回的 exifOrientation 似乎与 case 语句中列出的任何值都不匹配。 请先检查 exifOrientation 的值。

getAttributeInt(String tag, int defaultValue) 返回指定标签的整数值,在本例中为 TAG_ORIENTATION。如果JPEG文件中没有这个标签或者该值不能被解析为整数,返回defaultValue。

我会根据您的结果假设以下事实:

  1. JPEG 具有 TAG_ORIENTATION。
  2. 但是,返回值 exifOrientation 与 case 语句中列出的 ORIENTATION_*** 中的任何一个都不匹配。
  3. 请检查位于 imagePath 的 JPEG 文件在 EXIF 元数据中的方向信息是否正确。

您可以使用一些图像查看器工具来查看它,例如带有插件的 Irfanview。

【讨论】:

  • 嘿,我读到了。当您处理位图并调整其大小时,exif 信息通常会消失。如果这是真的,那么我可能需要自己设置 tge exif 信息并确保新文件将具有旧文件的 EXIF。谢谢您的帮助!我希望这是正确的
猜你喜欢
  • 1970-01-01
  • 2021-05-25
  • 1970-01-01
  • 2020-05-19
  • 2016-06-29
  • 1970-01-01
  • 2014-11-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多