2012-07-16 58 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

相關問題