1. 程式人生 > >android 拍照的照片方向問題,讀取圖片EXIF資訊

android 拍照的照片方向問題,讀取圖片EXIF資訊

      Exif 是一種圖象檔案格式,它的資料儲存與JPEG格式是完全相同的。實際上Exif格式就是在JPEG格式頭部插入了數碼照片的資訊,包括拍攝時的光圈、快門、白平衡、ISO、焦距、日期時間等各種和拍攝條件以及相機品牌、型號、色彩編碼、拍攝時錄製的聲音以及全球定位系統(GPS)、縮圖等。     

       android拍照後照片的詳細資訊都儲存在Exif中,獲取圖片方向的方法如下,其他資訊同樣方法獲取:

String sFileName="/sdcard/DCIM/Camera/123.JPG";
ExifInterface exif = new ExifInterface(sFileName);
String direction =exif.getAttribute(ExifInterface.TAG_ORIENTATION);   //獲取圖片方向
Log.d("照片方向", direction);

獲得了方向還要知道方向對應的圖片顯示方向:

public String getOrientationDescription() throws MetadataException{
if (!_directory.containsTag(ExifDirectory.TAG_ORIENTATION)) return null;
int orientation = _directory.getInt(ExifDirectory.TAG_ORIENTATION);
switch (orientation) {
case 1: return "Top, left side (Horizontal / normal)";
case 2: return "Top, right side (Mirror horizontal)";
case 3: return "Bottom, right side (Rotate 180)";
case 4: return "Bottom, left side (Mirror vertical)";
case 5: return "Left side, top (Mirror horizontal and rotate 270 CW)";
case 6: return "Right side, top (Rotate 90 CW)";
case 7: return "Right side, bottom (Mirror horizontal and rotate 90 CW)";
case 8: return "Left side, bottom (Rotate 270 CW)";
default: return String.valueOf(orientation);
}

       我們都遇到過這樣的情況,拍攝高的景物時,會把相機豎著拍,但是這樣得到的圖片如果用普通的圖片瀏覽器看景物就是躺著的,需要調整一個角度。

用手機拍照實驗(用普通瀏覽器來看):

橫拿手機右手拍照,照片方向"1""Horizontal"。

正常拿手機豎拍,照片方向"6""Rotate 90 CW",圖片順時針旋轉90度時,即正常。

再轉90度,橫拿,左手拍照,照片方向"3""Rotate 180",旋轉180度即可正常顯示方向。

再轉90度,手機頭朝下拍,照片方向"8""Rotate 270 CW"

取到這些值,就可以進行相應的操作了。