背景:我写了一个信使程序的相机应用。我无法随时将捕获的图像保存到永久磁盘。相机必须支持所有的方向。我的实现是熟悉的Surfaceview示例。我使用Display类来检测方向并相应地旋转相机。在takePicture JPEG回调,我构建从字节[]的位图,以便获得周围我在某些方面比的问题:Camera API: Cross device issues从图片回调阅读安卓JPEG EXIF元数据
问题描述:在某些设备上,在ROTATION_270采取的构造位图(装置旋转90度数顺时针)倒过来。到目前为止,它似乎是三星。我只能假设,也许摄像机是焊接在另一方面或这样的影响,但这不是在这里或那里。虽然我可以检查位图是否横向,但我无法从逻辑上检查它是否由维度颠倒,因此我需要访问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/android/media/ExifInterface.java
那么我的问题有两个部分:
有谁知道,如果byte []数组包含全EXIF JPEG头 数据作为或穿过BitmapFactory.decode(...)的路径/ BitmapFactory.compress(...)加入该不知?
如果EXIF数据在字节数组中存在,我怎样才能以可靠的方式解析出 方向信息?下面
编辑12年10月18日
pcans'答案涉及我的问题的第2部分。正如我在他的回答下面的评论中所指出的那样,如果你想使用该解析器,你必须将源代码合并到你的项目中。在链接SO帖子中提到的改变已经作出这里转贴:
https://github.com/strangecargo/metadata-extractor
注意新的直接metadata-extractor工作在Android版本不加修饰,并通过Maven里可以得到。
但是,至于第1部分,当我使用从takePicture获得的字节数组运行它时,我从解析器中获取了0个标记。我担心字节数组没有我需要的数据。我会继续研究这个,但欢迎任何进一步的见解。
我已经提供了一个Android的Java元数据库,可以为JPEG,TIFF,PNG,GIF等图像提取和插入元数据(Exif,XMP,IPTC,ICC_Profile,Photoshop IRB等)。 https://github.com/dragon66/pixymeta-android) – dragon66
关于[读写EXIF]的文章(http://onetouchcode.com/2016/08/23/write-exif-data-image-android/) Android – Shailendra
中的图像文件该元数据提取链接需要一个.com:https://drewnoakes.com/code/exif/ – user4851