[英]Manually extract EXIF from stream and attach it to JPEG file
给定一个图像Uri
,我需要将图像保存到我的应用程序的缓存目录中。 我正在使用InputStream
从Uri
提取bitmap
,因为Uri
可能来自MediaStore
或其他应用程序的内容Uri
(例如 Google 照片),并且不能在所有情况下安全地导出 filePath。
由于在 android Marshmallow
及以下版本中没有从InputStream
或FileDescriptor
读取EXIF
方法,因此我正在使用这个库,它具有InputStream
的 Exif 构造函数。
我想,当我解压bitmap
来自Uri
并将其写入到一个JPEG
在我的缓存目录中的文件,我想缝合所有的EXIF
我从有数据InputStream
这个JPEG
文件的,因为有些业务要求(旋转和主要是经纬度)。
我无法使用上述库找出正确的方法(不太精通EXIF
)。 任何帮助将不胜感激。
对于此类问题,这不是正确的方法。 该流已经是一个包含所有 EXIF 数据的 JPG。 您只需将流直接复制到您的应用程序缓存。
类似的东西:
// in is the inputstream that you got from the Uri
// dst is a file to your app internal cache
public void copy(Uri uri, File dst) throws IOException {
InputStream in = contentResolver.openInputStream(uri);
OutputStream out = new FileOutputStream(dst);
// Transfer bytes from in to out
byte[] buf = new byte[1024];
int len;
while ((len = in.read(buf)) > 0) {
out.write(buf, 0, len);
}
in.close();
out.close();
}
执行此操作后,原始 JPG 的副本将保存在您的应用程序本地缓存中,包括其所有 EXIF。 之后,如果您想要位图(在屏幕上显示、应用效果或其他),那么您可以从 JPG 副本中加载位图。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.