Exif数据TAG_ORIENTATION始终为0

我需要知道从画廊(由相机拍摄)的图像的方向。 我最初的方法是使用MediaStore.Images.Media.ORIENTATION这是我的Droid 1的工作。当在HTC Thunderbolttesting手机只保存0到该字段。

然后我转向阅读exif数据:

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

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

  • Android:从URI获取EXIF旋转
  • 如何在Android的exif数据中保存GPS坐标?
  • Android EXIF数据总是0,如何更改呢?
  • Android:将GPSTimeStamp放入jpg EXIF标签
  • Android的EXIF数据总是为0,如何改变呢?
  • 从图像中删除或更新exif缩略图
  • 如何在Android中写入Exif数据到图像?
  • Android:将GPSTimeStamp放入jpg EXIF标签
  • 这是我在activity中使用onActivityResult()的代码。 返回的意图是为了挑选types为image / *的图像。 适合我!

     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); 

    我的解决scheme

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

    使用标准的String[] orientationColumn = {MediaStore.Images.Media.ORIENTATION}; 得到一个方向。

    如果这是0使用decodeStream …

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

    否则它是风景

    这是一个错误,我发现这是涉及到另一个Android的bug ..我find了一个合理的解决scheme张贴在这里https://stackoverflow.com/a/8864367/137404