android图片旋转保存,android图片旋转之ExifInterface

ExifInterface是什么?

ExifInterface是Android系统在2.0以后,媒体库加入操作图片Exif的类,Exif是可交换图像文件格式,是专门为数码相机的照片而设定的,可以记录数码照片的属性信息和拍摄数据。简单点说就是保存照片信息的类 包括拍摄的光圈、快门、平衡白、ISO、焦距、日期时间等各种和拍摄条件以及相机品牌、型号、色彩编码以及GPS等。

ExifInterface官方api说明

使用

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中有常量对应表示。

//获取参数值

ExifInterface exifInterface = new ExifInterface(

7 "/sdcard/a.jpg");

8 String FFNumber = exifInterface

9 .getAttribute(ExifInterface.TAG_APERTURE);

10 String FDateTime = exifInterface

11 .getAttribute(ExifInterface.TAG_DATETIME);

12 String FExposureTime = exifInterface

13 .getAttribute(ExifInterface.TAG_EXPOSURE_TIME);

14 String FFlash = exifInterface

15 .getAttribute(ExifInterface.TAG_FLASH);

16 String FFocalLength = exifInterface

17 .getAttribute(ExifInterface.TAG_FOCAL_LENGTH);

18 String FImageLength = exifInterface

19 .getAttribute(ExifInterface.TAG_IMAGE_LENGTH);

20 String FImageWidth = exifInterface

21 .getAttribute(ExifInterface.TAG_IMAGE_WIDTH);

22 String FISOSpeedRatings = exifInterface

23 .getAttribute(ExifInterface.TAG_ISO);

24 String FMake = exifInterface

25 .getAttribute(ExifInterface.TAG_MAKE);

26 String FModel = exifInterface

27 .getAttribute(ExifInterface.TAG_MODEL);

28 String FOrientation = exifInterface

29 .getAttribute(ExifInterface.TAG_ORIENTATION);

30 String FWhiteBalance = exifInterface

31 .getAttribute(ExifInterface.TAG_WHITE_BALANCE);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值