我试图添加一个缩略图到JPEG图片使用libexif。现在,我从exif ( libexif团队提供的命令行工具)借用代码。但是,我注意到从元数据中删除了XMP标记。有一个古老的这里。
我试图了解如何使用libexif来实现这一点,但我并不真正理解如何从输入文件中获取XMP并将其放入输出文件中。我只想复制所有的XMP数据,我不需要提取任何数据。
我看到tag.h中有一个标记tag.h,但不知道如何读/写这个标记。
一个相关的解决方案是在这个答案中,但它看起来很复杂。我不熟悉C语言的编码。
如果只使用libexif API,是否可以保留所有的XMP?最近几年在这方面有什么变化吗?你怎么用代码写这个?
谢谢
发布于 2022-02-06 17:58:15
我认为这应该有点直截了当。XMP字段在ISO/Adobe标准中进行了描述。常规的Kotlin/Java/Android文件I/O和一些字符串操作应该是所需的。
首先,我将熟悉ISO 16684-1:2019.然后,为jpeg文件类编写一个获取所有XMP字段的方法。将这些字段存储在临时文件中(以防止在发生代码或libexif崩溃时难以恢复数据丢失)。把文件交给libexif。生成缩略图。最后,当完成之后,您可以恢复XMP字段。如果缩略图也存储在XMP字段中(听起来也是这样),那么在将所有XMP字段添加回jpeg之前,可能更容易将该字段与其他已被抓取的字段连接起来,更新临时文件,使其包含每个XMP字段。
不幸的是,我目前没有时间阅读50页ISO标准,合成信息,然后编写代码来实现解决方案。至少这里有一个标准链接,可以让你开始工作。
https://stackoverflow.com/questions/67264563
复制相似问题