setRotation method中的Camera.Parameters不适用于所有设备。有人建议手动更改EXIF信息来解决此问题。您能否举一个简短的示例,说明如何使用exif设置ExifInterface信息,从而将图像方向设置为纵向?

private int savePicture(byte[] data)
{
       File pictureFile = getOutputMediaFile();
       if (pictureFile == null)
           return FILE_CREATION_ERROR;

       try {
           FileOutputStream fos = new FileOutputStream(pictureFile);
           fos.write(data);
           fos.close();
       } catch (FileNotFoundException e) {
           return FILE_NOT_FOUND;
       } catch (IOException e) {
           return ACCESSING_FILE_ERROR;
       }

   return OKAY;
}

我已经试过了:
    try {
        ExifInterface exifi = new ExifInterface(pictureFile.getAbsolutePath());
        exifi.setAttribute(ExifInterface.TAG_ORIENTATION, String.valueOf(ExifInterface.ORIENTATION_ROTATE_90));
        exifi.saveAttributes();
    } catch (IOException e) {
        Log.e(TAG, "Exif error");
    }

但是当我可视化android画廊中的图片时,什么都没有改变。

最佳答案

对于那些实际上想要写出这些EXIF信息的人,下面是一些代码:

ExifInterface exifInterface = new ExifInterface(someFile.getPath());
exifInterface.setAttribute(ExifInterface.TAG_ORIENTATION,
                           String.valueOf(orientation));
exifInterface.saveAttributes();

orientation是标准方向之一,即ExifInterface.ORIENTATION_ROTATE_{90,180,270}

10-07 12:23