ExifInterface針對照片的使用


  • ExifInterface是保存照片信息的,那么我們在有需要的時候就可以通過這類,來獲取照片的一些數碼參數來做適當來邏輯處理,比較典型的案例就是android有的機型拍照或者選擇照片后,照片可能會被旋轉。這個時候我們就可以通過這個類來獲取圖片的旋轉角度信息了。
    // 從指定路徑下讀取圖片,並獲取其EXIF信息。這里傳入需要獲取圖片的sd卡路徑
     private int getBitmapDegree(String path) {
            int degree = 0;
            try {
                // 從指定路徑下讀取圖片,並獲取其EXIF信息
                ExifInterface exifInterface = new ExifInterface(path);
                // 獲取圖片的旋轉信息
                int orientation = exifInterface.getAttributeInt(ExifInterface.TAG_ORIENTATION,
                        ExifInterface.ORIENTATION_NORMAL);
                switch (orientation) {
                    case ExifInterface.ORIENTATION_ROTATE_90:
                        degree = 90;
                        break;
                    case ExifInterface.ORIENTATION_ROTATE_180:
                        degree = 180;
                        break;
                    case ExifInterface.ORIENTATION_ROTATE_270:
                        degree = 270;
                        break;
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
            return degree;
        }
    
    
    String getAttribute(String tag):獲取圖片中屬性為tag的字符串值。
    double getAttribute(String tag,double defaultValue):獲取圖片中屬性為tag的double值。
    int getAttributeInt(String tag,defaultValue):獲取圖片中屬性為tag的int值。
    void setAttribute(String tag,String value):根據輸入參數,設定圖片Exif的值。
    void saveAttrubutes():把內存中圖片的Exif寫入到圖片中
    可以看到,上面大部分方法操作了一個String類型的tag參數,此為Exif的屬性,在ExifInterface中定義了一些字符串的靜態常量表示這些tag值,常用如下:
    
    TAG_APERTURE:光圈值。
    TAG_DATETIME:拍攝時間,取決於設備設置的時間。
    TAG_EXPOSURE_TIME:曝光時間。
    TAG_FLASH:閃光燈。
    TAG_FOCAL_LENGTH:焦距。
    TAG_IMAGE_LENGTH:圖片高度。
    TAG_IMAGE_WIDTH:圖片寬度。
    TAG_ISO:ISO。
    TAG_MAKE:設備品牌。
    TAG_MODEL:設備型號,整形表示,在ExifInterface中有常量對應表示。
    TAG_ORIENTATION:旋轉角度,整形表示,在ExifInterface中有常量對應表示。
    

     


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM