android exif 第三方,android开发:ExifInterface 介绍

这篇博客介绍了在Android多媒体开发中如何利用ExifInterface接口处理图片的旋转信息。通过ExifInterface读取图片的ORIENTATION_TAG,计算旋转角度,并使用Matrix进行旋转操作,确保图片显示正常。同时,该方法还考虑了异常处理和资源回收。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在Android多媒体开发中,ExifInterface(exif exchangeable image file) ,这个接口提供了图片文件的旋转,gps,时间等信息。

/**

* 获取正常角度的图片

* @param path

* @param srcBitmap

* @return

*/

public static Bitmap rotateBitmapInNeeded(String path, Bitmap srcBitmap) {

if (TextUtils.isEmpty(path) || srcBitmap == null) {

return null;

}

ExifInterface localExifInterface;

try {

localExifInterface = new ExifInterface(path);

int rotateInt = localExifInterface.getAttributeInt(

ExifInterface.TAG_ORIENTATION,

ExifInterface.ORIENTATION_NORMAL);

float rotate = getImageRotate(rotateInt);

if (rotate != 0) {

Matrix matrix = new Matrix();

matrix.postRotate(rotate);

Bitmap dstBitmap = Bitmap.createBitmap(srcBitmap, 0, 0,

srcBitmap.getWidth(), srcBitmap.getHeight(), matrix,

false);

if (dstBitmap == null) {

return srcBitmap;

} else {

if (srcBitmap != null && !srcBitmap.isRecycled()) {

srcBitmap.recycle();

}

return dstBitmap;

}

} else {

return srcBitmap;

}

} catch (IOException e) {

e.printStackTrace();

return srcBitmap;

}

}

/**

* 获得旋转角度

*

* @param rotate

* @return

*/

public static float getImageRotate(int rotate) {

float f;

if (rotate == 6) {

f = 90.0F;

} else if (rotate == 3) {

f = 180.0F;

} else if (rotate == 8) {

f = 270.0F;

} else {

f = 0.0F;

}

return f;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值