相关疑难解决方法(0)

从图片回调中读取android jpeg EXIF元数据

背景:我正在为一个信使程序编写一个相机应用程序.我无法随时将捕获的图像保存到永久磁盘.相机必须支持所有方向.我的实现是熟悉的Surfaceview示例.我使用Display类来检测方向并相应地旋转相机.在takePicture jpeg回调中,我从byte []构造一个位图,以解决我遇到的一些宽高比问题:Camera API:跨设备问题

问题描述:在某些设备上,在ROTATION_270处拍摄的构造的位图(设备顺时针旋转90度)是颠倒的.到目前为止,似乎是三星.我只能假设相机可能是通过其他方式焊接或者是那种影响,但这既不是在这里也不是在那里.虽然我可以检查Bitmap是否是横向的,但我无法从逻辑上检查它是否是尺寸颠倒所以我需要访问EXIF数据.

Android提供了一个解析器这个http://developer.android.com/reference/android/media/ExifInterface.html但不幸的是它具有接受文件的单一构造......我没有,不想.直观地说,我可以为一个字节数组编写一个构造函数,但考虑到它们调用本机代码,这看起来真的很痛苦http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/2.2 .1_r1 /安卓/媒体/ ExifInterface.java

我的问题有两个部分:

  1. 有没有人知道byte []数组是否包含完整的EXIF jpeg头数据,或者是通过BitmapFactory.decode(...)/ BitmapFactory.compress(...)的路径以某种方式添加?

  2. 如果此EXIF数据在字节数组中退出,我如何以可靠的方式解析方向信息?

编辑10/18/12

下面的pcans回答涉及我的问题的第2部分.正如我在下面的评论中指出的那样,如果你想使用该解析器,你必须将源代码合并到你的项目中.链接SO帖子中提到的更改已经在此处进行了转发:https://github.com/strangecargo/metadata-extractor

注意元数据提取器的更新版本可直接在Android上运行而无需修改,可通过Maven获得.

但是,至于第1部分,当我使用从takePicture获得的字节数组运行时,我从解析器返回0个标签.我开始担心字节数组没有我需要的数据.我将继续研究这一点,但欢迎任何进一步的见解.

java android jpeg exif

32
推荐指数
3
解决办法
5万
查看次数

标签 统计

android ×1

exif ×1

java ×1

jpeg ×1