2012-07-16 31 views
2

我是Android的新手。我正在尝试使用里面的照片捕捉功能制作应用程序。问题是照片旋转不正确。如果以横向模式拍摄照片,效果会很好,但在肖像模式下,照片旋转将会错误。我的问题是:我可以检查照片是否以横向/纵向模式拍摄吗?因为当我检查LogCat时,我可以看到名为“CameraEngine”的标签,并且它表示旋转:0或90.如果我可以通过代码获取这种相机信息,这将很酷。如何在Android中检查照片是以横向还是纵向模式拍摄的?

+0

你想知道你的相机捕捉刚过照片,或者当你从画廊挑选形象? – sarabhai05 2012-10-09 06:55:07

回答

4

你可以比较像的宽度和高度:

Bitmap bmp = your photo; 

if(bmp.getWidth() > bmp.getHeight()) 
{ 
    // landscape 
}else 
{ 
    // portrait 
} 
+0

谢谢,但它似乎总是在风景照片。 – zacess 2012-07-17 08:40:16

0

这应该做你所需要的。它返回取向的角度(0/90/180/270):

private int getOrientation(Uri aUri, ContentResolver aRslv) { 
    Cursor _cursor = aRslv.query(aUri, 
      new String[] { MediaStore.Images.ImageColumns.ORIENTATION }, 
      null, null, null); 

    if (_cursor != null) { 
     try { 

      if (_cursor.moveToFirst()) { 
       return _cursor.getInt(0); 
      } else { 
       return -1; 
      } 
     } finally { 
      _cursor.close(); 
     } 
    } else { 
     return 0; 
    } 
} 
+0

谢谢你的回答。我试图在onActivityResult中调用它,但结果总是返回0.我以正确的方式做了吗?请帮助 – zacess 2012-07-17 08:39:16

+0

您是否从ContentResolver获得非空游标? – Stevie 2012-07-17 14:31:09

+0

是的,我得到了这样的游标:“[email protected]”。我也尝试打印出_cursor.getInt(0),它总是返回0。 – zacess 2012-07-18 08:07:17

相关问题