繁体   English   中英

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

[英]Manually extract EXIF from stream and attach it to JPEG file

给定一个图像Uri ,我需要将图像保存到我的应用程序的缓存目录中。 我正在使用InputStreamUri提取bitmap ,因为Uri可能来自MediaStore或其他应用程序的内容Uri (例如 Google 照片),并且不能在所有情况下安全地导出 filePath。

由于在 android Marshmallow及以下版本中没有从InputStreamFileDescriptor读取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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM