【问题标题】:Android - using sanselan to manually update pictures Exif dataAndroid——使用sanselan手动更新图片Exif数据
【发布时间】:2013-02-06 16:19:58
【问题描述】:

我一直在尝试使用 sanselan library for android 来正确更新我的图像旋转数据,但我无法让它工作。我想知道这里是否有人让这个工作。我整天都在查看类似问题的答案,但似乎还没有任何效果。在galaxy s3和motorola razor m上,出于某种原因,我总是在图片中嵌入风景旋转。我已经在我分配给我的相机和所有东西的参数中设置了旋转属性,但它仍然无法正常工作。有人对他们如何成功手动更新 android 中图像中的 Exif 数据有任何想法、链接或示例吗?

【问题讨论】:

    标签: android android-camera exif


    【解决方案1】:

    某些设备,例如 Galaxy S3、Note2 会提供旋转图像。正确获取图像 按照亲爱的步骤:

    1. 使用方向 exif 信息旋转位图
    2. 为图像 exif 方向设置适当的值

    如果我没看错,您的问题出现在第 2 步。如果您尝试更新 exif 方向,Sanselan 将复制方向属性。所以首先,你必须删除方向值,然后添加值。我是这样解决的:

                List<?> sourceDirectories = outputSet.getDirectories();
                for (int i = 0; i < sourceDirectories.size(); i++) {
                    TiffOutputDirectory sourceDirectory = (TiffOutputDirectory) sourceDirectories.get(i);
    
                    List<?> sourceFields = sourceDirectory.getFields();
                    for (int j = 0; j < sourceFields.size(); j++) {
                        TiffOutputField sourceField = (TiffOutputField) sourceFields.get(j);
                        if (sourceField.tagInfo.name.equals("Orientation")) {
                            sourceDirectory.removeField(sourceField.tagInfo);
                        }
                    }
                }
    
                TiffOutputDirectory tiffDirectory = outputSet.getExifDirectory();
                TiffOutputField orientationField = TiffOutputField.create(TiffConstants.EXIF_TAG_ORIENTATION, outputSet.byteOrder, 1);
                tiffDirectory.add(orientationField);
    

    This article could help you in orientation value

    【讨论】:

    • 我最终使用了类似的东西,但仍然在某些奇怪的球设备上,您无法从设备硬件拍摄的照片中读取 exif 数据。在那种情况下,我只是让图像做自己的事情,一切正常
    猜你喜欢
    • 2014-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多