Exif数据TAG_ORIENTATION始终为0

时间:2011-04-07 00:35:53

标签: android camera orientation photo exif

我需要知道图库中图像的方向(由相机拍摄)。我最初的方法是使用适用于我的Droid 1的MediaStore.Images.Media.ORIENTATION 1.在HTC Thunderbolt上测试时,手机只能将0保存到该字段。

然后我开始阅读exif数据:

 ExifInterface exifReader = new ExifInterface(mFilePath);
 exifReader.getAttributeInt(ExifInterface.TAG_ORIENTATION, -1);

每个图像也会返回0。任何人都有关于如何正确获取Android照片的方向的想法?

3 个答案:

答案 0 :(得分:28)

这是我在我的活动中使用onActivityResult()的代码。返回的意图是选择图像类型/ *的图像。对我来说效果很好!

Uri imageUri = intent.getData();
String[] orientationColumn = {MediaStore.Images.Media.ORIENTATION};
Cursor cur = managedQuery(imageUri, orientationColumn, null, null, null);
int orientation = -1;
if (cur != null && cur.moveToFirst()) {
    orientation = cur.getInt(cur.getColumnIndex(orientationColumn[0]));
}  
Matrix matrix = new Matrix();
matrix.postRotate(orientation);

答案 1 :(得分:5)

我的解决方案:

从exif数据中删除任何方向检查。我找不到一个准确的实例。

使用标准String[] orientationColumn = {MediaStore.Images.Media.ORIENTATION};获取方向。

如果这是0使用 decodeStream ...

if(o.outHeight > o.outWidth){
  //set orientation to portrait
}

否则它是风景

答案 2 :(得分:3)

这是我发现的一个与另一个Android bug有关的错误..我在这里发现了一个合理的解决方案https://stackoverflow.com/a/8864367/137404