Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android多媒體- ExifInterface讀取圖片相關信息

Android多媒體- ExifInterface讀取圖片相關信息

編輯:關於Android編程

從Android 2.0開始新增了ExifInterface類,ExifInterface類主要描述多媒體文件比如JPG格式圖片的一些附加信息,比如圖片文件的旋轉,gps,縮略圖等。該類位於android.media.ExifInterface的位置,需要調用API Level至少為5即2.0 SDK。

圖片的的Exif信息和MP3的ID3標簽類似,使用了屬性和值的存儲方式。通過public void setAttribute (String tag, String value) 來設置,而獲取可以通過 public int getAttributeInt (String tag, int defaultValue) 和 public String getAttribute (String tag) 兩種方法都可以,getAttributeInt 重載方法一第二個參數為我們設置的默認值,如果成功則返回相應Tag的值;特定的整數內容為該方法直接返回值。而重載方法二該方法直接返回結果,如果失敗則為null。


  目前Android SDK定義的Tag有:


  TAG_DATETIME 時間日期


  TAG_FLASH 閃光燈


  TAG_GPS_LATITUDE 緯度


  TAG_GPS_LATITUDE_REF 緯度參考


  TAG_GPS_LONGITUDE 經度


  TAG_GPS_LONGITUDE_REF 經度參考


  TAG_IMAGE_LENGTH 圖片長


  TAG_IMAGE_WIDTH 圖片寬


  TAG_MAKE 設備制造商


  TAG_MODEL 設備型號


  TAG_ORIENTATION 方向


  TAG_WHITE_BALANCE 白平衡


舉例代碼:

Bitmap bitmap =null;      
try { 
    ExifInterface exifInterface = new ExifInterface(file.getPath()); 
    int result = exifInterface.getAttributeInt( 
            ExifInterface.TAG_ORIENTATION, ExifInterface.ORIENTATION_UNDEFINED); 
    int rotate = 0; 
    switch(result) { 
    case ExifInterface.ORIENTATION_ROTATE_90: 
        rotate = 90; 
        break; 
    case ExifInterface.ORIENTATION_ROTATE_180: 
        rotate = 180; 
        break; 
    case ExifInterface.ORIENTATION_ROTATE_270: 
        rotate = 270; 
        break; 
    default: 
        break; 
    } 
    BitmapFactory.Options options = new BitmapFactory.Options();
    options.inPreferredConfig = Bitmap.Config.RGB_565;
    options.inJustDecodeBounds = true;
    BitmapFactory.decodeFile(filePath, options);
    if (options.outWidth < 0 || options.outHeight < 0) {
        return null;
    }
   
    options.inJustDecodeBounds = false;
    bitmap=  BitmapFactory.decodeFile(filePath, options);
    if(rotate > 0) { 
        Matrix matrix = new Matrix(); 
        matrix.setRotate(rotate); 
        Bitmap rotateBitmap = Bitmap.createBitmap( 
                bitmap, 0, 0, options.outWidth, options.outHeight, matrix, true); 
        if(rotateBitmap != null) { 
            bitmap.recycle(); 
            bitmap = rotateBitmap; 
        } 
    } 
} catch (IOException e) { 
    e.printStackTrace(); 
} 
在指定的tag後,返回一個int類型的值,這裡傳入的是ExifInterface.TAG_ORIENTATION,所以會返回一個角度的int類型的值,當我們用android 平板電腦,或者手機橫屏拍照片時並希望把它作為背景設置在所在的應用背景,而且不希望背景會產生旋轉90度得現象


Android 中保存圖片的代碼(下面鏈接文章也使用到了ExifInterface,方式還不太一樣)

http://blog.csdn.net/wstarx/article/details/6176902




  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved