【问题标题】:How to ensure that the Android gallery correctly rotates images taken in my app如何确保 Android 图库正确旋转在我的应用中拍摄的图像
【发布时间】:2019-05-11 09:33:11
【问题描述】:

我的应用拍摄照片,执行一些处理,并确保它们包含在 Android 图库中。

我遇到的问题是,当我打开图库中的图像时,它们没有正确旋转 - 尽管检查 Exif 数据显示方向标签 is 已设置并且看起来是正确的。如果我将它加载到 Exif 检查工具中,它会说“方向:旋转 90 CW”,但我注意到其他应用程序,如 Gimp,似乎也错过了 Exif 数据,所以我想知道是否有问题我存储的数据。

我的 Exif 定向代码是这样写的:

    private void writeOrientation(int orientation, String path) {
        try {
            int exifOrientation = ExifInterface.ORIENTATION_NORMAL;
            if (45 < orientation) {
                if (orientation <= 135) {
                    exifOrientation = ExifInterface.ORIENTATION_ROTATE_90;
                } else if (orientation <= 225) {
                    exifOrientation = ExifInterface.ORIENTATION_ROTATE_180;
                } else {
                    exifOrientation = ExifInterface.ORIENTATION_ROTATE_270;
                }
            }
            ExifInterface exif = new ExifInterface(path);
            exif.setAttribute(ExifInterface.TAG_ORIENTATION, String.valueOf(exifOrientation));
            exif.saveAttributes();
        } catch (Exception e) {
            Log.w(TAG, "Failing to write orientation: " + e.getMessage());
            Log.getStackTraceString(e);
        }
    }

这似乎确实有效 - 在我自己的代码中,我正在根据图像的方向旋转图像,它看起来很正常。但是在画廊中,我所有的肖像图像仍然显示为风景。

图库是否使用 Exif 数据来旋转图像?如果没有,它确实使用了其他东西,还是我应该用旋转版本覆盖图像?如何确保加载我的图像的图库和其他应用程序具备以正确方向显示它们所需的一切?

【问题讨论】:

    标签: android image exif


    【解决方案1】:

    好问题。

    如果方向已保存到文件中但未出现在图库中,则可能是因为方向已缓存在 MediaStore 中。因此,您还需要尝试在此处更新此信息。

    参考 - https://stackoverflow.com/a/22371344/9640177

    我想说的是,有些应用可能没有实现 Exif 接口,在这种情况下,最好用旋转版本覆盖图像。

    【讨论】:

      【解决方案2】:

      就我而言,令人失望的解决方案是我是个大白痴。我正在加载图像,使用 Exif 数据旋转它们,更新它们并使用保留的 Exif 数据保存它们。我错过了这个过程的一部分,我将它们旋转保存,因此肖像图像现在处于正确的方向而没有旋转,然后 Exif 数据指示画廊旋转它们。

      有时(几乎总是)问题在于系统完全按照您的指示行事。

      【讨论】:

        猜你喜欢
        • 2020-03-02
        • 1970-01-01
        • 1970-01-01
        • 2023-03-25
        • 2011-11-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多