从流中手动提取EXIF并将其附加到JPEG文件

时间:2016-09-17 07:06:41

标签: java android bitmap exif

给定图像Uri,我需要将图像保存到应用程序的缓存目录中。我使用bitmapUri中提取InputStream,因为Uri可能来自MediaStore或其他应用的内容Uri(例如Google照片)和filePath无法在所有情况下安全地派生。

由于没有方法可以从EXIFInputStream及其下方的FileDescriptor中读取Marshmallow,我使用的是this库,其中包含Exif InputStream的构造函数。

我想要的是,当我从bitmap中提取Uri并将其写入我的缓存目录中的JPEG文件时,我想要拼接所有EXIF我从InputStream到此JPEG文件获得的数据是因为一些业务需求(主要是轮换和lat-long)。

我无法使用上面的库找出正确的方法(不是非常精通EXIF)。任何帮助都将受到高度赞赏。

1 个答案:

答案 0 :(得分:1)

对于这类问题,这不是正确的方法。该流已经是JPG,其中包含所有EXIF数据。您只需将流直接复制到应用缓存即可。

类似的东西:

.as-console-wrapper { max-height: 100% !important; top: 0; }

执行此操作后,原始JPG的副本将保存在您的应用本地缓存中,包括其所有EXIF。之后,如果你想要一个Bitmap(在屏幕上显示,应用效果或其他),那么你从JPG副本加载位图。