【问题标题】:How to write or modify EXIF data for an existing image on the filesystem, without loading the image?如何在不加载图像的情况下为文件系统上的现有图像写入或修改 EXIF 数据?
【发布时间】:2012-07-30 05:01:45
【问题描述】:

我以前也问过类似的问题,但没有得到明确的答案。似乎必须有一种方法可以简单地向图像添加/修改元数据,而无需将图像加载到内存中,而无需处理直接读取位。

使用CMSampleBufferRefs 时似乎存在一些方法,但我需要能够使用已保存到磁盘的常规图像来执行此操作。
例如,给定一个非常大的png /Documents/photo.png,我想修改它的 exif 元数据而不必加载该图像。

【问题讨论】:

  • 由于@H2CO3 可能为您提供了您可以使用的唯一解决方案(我没有),请接受他的回答。
  • 还请注意,如果您不接受任何答案,您仍然无法取回赏金的价值。因此,如果您接受了其中一个答案,那只会对其中一位回答者有利。 :)

标签: ios metadata exif


【解决方案1】:

您可以使用 libexif - 我之前已经成功为 iOS 编译过它。使用 libexif,您可以修改任何图像的 EXIF 元数据。

【讨论】:

  • 可以,但是这个框架会先把图片加载到内存中吗?
  • 那很好。您能否提供一个使用 libexif 的示例?即加载元数据并将其写回文件。
  • @akaru 这就是我在文件管理器应用中实现 EXIF 元数据读写的方式:github.com/H2CO3/MyFile/blob/master/src/…
  • 顺便说一句,如果我的回答对您有帮助,我将不胜感激:)
  • @EricBrochu(天啊,我两年前的代码太可怕了,我什至无法表达。看看那个链接的 if-else 和多余的本地 malloc()s,aaargh .. .!) 确实如此,但我不确定这是必须的。事实上,我很有信心这不是应该的。看到我那段代码的质量......我什至不认为我正确使用了库。
【解决方案2】:

如果您知道如何修改 EXIF,则可以直接从文件中修改二进制数据。只需将图像中的二进制部分替换为新的部分。 我不知道objective-c 是否允许这样做,但在ansi c 中应该很简单。复杂的部分是确定要更改的确切部分。

【讨论】:

    猜你喜欢
    • 2014-08-29
    • 2012-04-06
    • 1970-01-01
    • 1970-01-01
    • 2011-12-17
    • 2016-03-25
    • 2012-05-11
    • 2020-08-15
    • 1970-01-01
    相关资源
    最近更新 更多