Android中读图片Exif信息的方法

简介: Exif读取类Android提供了读取写入Exif的API,但很可惜,这个API只能由指定文件名读取、写入Exif,效率低得可怜。 不得已,把Android系统代码里图库的一段摘了过来。 有Android源码的看源码中 packages/apps/Gallery2/ 部分, 没有或者图方便的直接看这里: https://github.com/jxt1234/Thir

Exif读取类

Android提供了读取写入Exif的API,但很可惜,这个API只能由指定文件名读取、写入Exif,效率低得可怜。
不得已,把Android系统代码里图库的一段摘了过来。
有Android源码的看源码中 packages/apps/Gallery2/ 部分,
没有或者图方便的直接看这里:
https://github.com/jxt1234/ThirdPartyUsefulCode/tree/master/android_app/exif

使用方法

和SDK中那个API用法基本一致,可参考:
http://www.cnblogs.com/hyzhou/p/3336812.html
不过这个Exif库支持从内存、流之中直接读取写入,方便很多。

用到的接口只有
ExifInterface
其中读取和写入的接口支持内存/流。
readExif 读取
writeExif 写入
其他用法一样。

使用实例

读取Exif中的缩略图示例

public void onHandle(final byte[] data){
    ExifInterface exif = new ExifInterface();
    try {
        exif.readExif(data);
    } catch (IOException e1) {
        e1.printStackTrace();
    }
    Bitmap thumbnail_origin = null;
    if (exif.hasThumbnail()){
        thumbnail_origin = exif.getThumbnailBitmap();
    }
    /*.......*/
}

写入:

    //Bitmap result = XXXXXXX;
    //String file = YYYY;
    //ExifInterface exif = ZZZZ;
    FileOutputStream fstream = new FileOutputStream(file);
    try {
        exif.writeExif(result, fstream);
    } catch (IOException e1) {
    }
目录
相关文章
|
3月前
|
存储 Shell Android开发
基于Android P,自定义Android开机动画的方法
本文详细介绍了基于Android P系统自定义开机动画的步骤,包括动画文件结构、脚本编写、ZIP打包方法以及如何将自定义动画集成到AOSP源码中。
76 2
基于Android P,自定义Android开机动画的方法
|
3月前
|
Android开发
基于android-11.0.0_r39,系统应用的手动签名方法和过程
本文介绍了基于Android 11.0.0_r39版本进行系统应用手动签名的方法和解决签名过程中遇到的错误,包括处理`no conscrypt_openjdk_jni-linux-x86_64`和`RegisterNatives failed`的问题。
180 2
|
21天前
|
缓存 Java Shell
Android 系统缓存扫描与清理方法分析
Android 系统缓存从原理探索到实现。
45 15
Android 系统缓存扫描与清理方法分析
|
2月前
|
存储 缓存 编解码
Android经典面试题之图片Bitmap怎么做优化
本文介绍了图片相关的内存优化方法,包括分辨率适配、图片压缩与缓存。文中详细讲解了如何根据不同分辨率放置图片资源,避免图片拉伸变形;并通过示例代码展示了使用`BitmapFactory.Options`进行图片压缩的具体步骤。此外,还介绍了Glide等第三方库如何利用LRU算法实现高效图片缓存。
64 20
Android经典面试题之图片Bitmap怎么做优化
|
1月前
|
Java Unix Linux
Android Studio中Terminal运行./gradlew clean build提示错误信息
遇到 `./gradlew clean build`命令执行出错时,首先应检查错误信息的具体内容,这通常会指向问题的根源。从权限、环境配置、依赖下载、版本兼容性到项目配置本身,逐一排查并应用相应的解决措施。记住,保持耐心,逐步解决问题,往往复杂问题都是由简单原因引起的。
222 2
|
2月前
|
ARouter 测试技术 API
Android经典面试题之组件化原理、优缺点、实现方法?
本文介绍了组件化在Android开发中的应用,详细阐述了其原理、优缺点及实现方式,包括模块化、接口编程、依赖注入、路由机制等内容,并提供了具体代码示例。
45 2
|
3月前
|
Android开发
Android在rootdir根目录创建自定义目录和挂载点的方法
本文介绍了在Android高通平台的根目录下创建自定义目录和挂载点的方法,通过修改Android.mk文件并使用`LOCAL_POST_INSTALL_CMD`变量在编译过程中添加目录,最终在ramdisk.img的系统根路径下成功创建了`/factory/bin`目录。
198 1
|
3月前
|
开发工具 uml git
AOSP源码下载方法,解决repo sync错误:android-13.0.0_r82
本文分享了下载AOSP源码的方法,包括如何使用repo工具和处理常见的repo sync错误,以及配置Python环境以确保顺利同步特定版本的AOSP代码。
423 0
AOSP源码下载方法,解决repo sync错误:android-13.0.0_r82
|
3月前
|
数据处理 开发工具 数据安全/隐私保护
Android平台RTMP推送|轻量级RTSP服务|GB28181接入之文字、png图片水印的精进之路
本文探讨了Android平台上推流模块中添加文字与PNG水印的技术演进。自2015年起,为了满足应急指挥及安防领域的需求,逐步发展出三代水印技术:第一代为静态文字与图像水印;第二代实现了动态更新水印内容的能力,例如实时位置与时间信息;至第三代,则优化了数据传输效率,直接使用Bitmap对象传递水印数据至JNI层,减少了内存拷贝次数。这些迭代不仅提升了用户体验和技术效率,也体现了开发者追求极致与不断创新的精神。
|
3月前
|
自然语言处理 定位技术 API
Android经典实战之如何获取图片的经纬度以及如何根据经纬度获取对应的地点名称
本文介绍如何在Android中从图片提取地理位置信息并转换为地址。首先利用`ExifInterface`获取图片内的经纬度,然后通过`Geocoder`将经纬度转为地址。注意操作需在子线程进行且考虑多语言支持。
226 4