Android - 使用sanselan手动更新图片Exif数据

时间:2013-01-24 04:10:17

标签: android android-camera exif

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

1 个答案:

答案 0 :(得分:2)

某些设备(如Galaxy S3,Note2)会显示旋转的图像。要正确获取图像 按照以下步骤进行操作:

  1. 使用方向exif信息
  2. 旋转位图
  3. 将正确的值设置为图像exif orientation
  4. 如果我看得很清楚,您的问题就出现在第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