ios – 如何在不复制图像的情况下将exif元数据注入图像?

ios – 如何在不复制图像的情况下将exif元数据注入图像?,第1张

概述我之前问过这个问题: How to write exif metadata to an image. 我现在已经找到了一种注入元数据的方法.但是,它会将图像副本复制到内存中.对于大图像,并且需要在内存中已经有副本,这将具有性能,并可能导致内存崩溃. 是否有正确的方法来注入元数据而无需复制图像?也许它可以在写入磁盘后添加到文件中? 我更喜欢原生实现,如果可能的话,不必为此而诉诸第三方库. 根据您的需 我之前问过这个问题: How to write exif metadata to an image.

我现在已经找到了一种注入元数据的方法.但是,它会将图像副本复制到内存中.对于大图像,并且需要在内存中已经有副本,这将具有性能,并可能导致内存崩溃.

是否有正确的方法来注入元数据而无需复制图像?也许它可以在写入磁盘后添加到文件中?

我更喜欢原生实现,如果可能的话,不必为此而诉诸第三方库.

解决方法 根据您的需要,此问题可能需要少量或大量代码. EXIF数据存储在JPEG APP1标记(FFE1)中.它看起来非常像带有TIFF标题,IFD和带有数据的单个标签的TIFF文件.如果您可以构建自己的APP1标记段,那么插入它或将其替换为JPEG文件是微不足道的.如果您希望从现有文件中读取元数据,请添加一些新标记,然后将其写回,这可能会更复杂. EXIF数据的棘手部分是那些需要超过4个字节的标签.每个TIFF标记为12个字节:2字节标记,2字节数据类型,4字节计数,4字节数据.如果数据不完全适合标记的4个字节,则标记指定文件中的绝对偏移量,以查找数据的位置.如果现有数据包含任何带有此类数据的标签(例如品牌,型号,捕获日期,捕获时间等),则需要通过修复偏移重新打包该数据,然后添加自己的数据.简而言之:

1)如果要将预先制作的APP1标记添加到JPEG文件中,这很简单,只需要很少的代码.

2)如果你需要从JPEG文件中读取现有的元数据,添加自己的元数据并将其写回,代码更复杂一些.这并不“困难”,但它涉及的不仅仅是读取和写入数据块.

首先阅读TIFF 6.0规范以了解标记和目录结构:

TIFF 6.0 spec

接下来,看看JPEG EXIF规范:

EXIF 2.2 Spec

总结

以上是内存溢出为你收集整理的ios – 如何在不复制图像的情况下将exif元数据注入图像?全部内容,希望文章能够帮你解决ios – 如何在不复制图像的情况下将exif元数据注入图像?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/999449.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-21
下一篇 2022-05-21

发表评论

登录后才能评论

评论列表(0条)

保存