如何在Android中将EXIF方向应用于图像URL

5

我在我的应用程序中处理相机图像,实际上是以URL的形式获取的。相机应用程序处于纵向模式。因此,图像有时会被左旋转或右旋转。我知道我们可以使用EXIF来获取正常的图像方向,从图库中获取,我们可以检查exif值并进行适当的更改。基本上这是exif的代码:

ExifInterface exif = new ExifInterface("filepath");
exif.getAttribute(ExifInterface.TAG_ORIENTATION);

所以我的问题是,在我的情况下,文件路径是什么,是URL本身还是我应该为此创建一个文件。 非常感谢您的帮助...
1个回答

1

首先,在onActivityResult中获取Uri,就像这样在拍照后的onActivityResult中获取图像Uri?
然后,当你有了Uri之后,可以像这样获取文件路径:String filepath = getRealPathFromURI(someUri);

public String getRealPathFromURI(Uri contentUri) {
    String res = null;
    String[] proj = { MediaStore.Images.Media.DATA };
    Cursor cursor = getContentResolver().query(contentUri, proj, null, null, null);
    if(cursor != null && cursor.moveToFirst()){;
       int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
       res = cursor.getString(column_index);
    }
    cursor.close();
    return res;
}


然后,如果filepath不为null且不为空,您可以获取EXIF数据,检查它并在需要时旋转图像。
希望这能有所帮助。


如何应用EXIF方向? - Narendra Singh
你需要获取方向,例如: int pictureOrientation = exif.getAttributeInt(ExifInterface.TAG_ORIENTATION, ExifInterface.ORIENTATION_NORMAL);然后你需要检查它: if (pictureOrientation == ExifInterface.ORIENTATION_ROTATE_180){ ... 在这里执行旋转代码 }你还需要检查其他的ExifInterface.ORIENTATION_*参数。 - Evgen
好的,谢谢您的回复。 - Narendra Singh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接