// 從指定路徑下讀取圖片,並獲取其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中有常量對應表示。