我对手动将IPTC字段以字节级别注入(inject)JPG文件感兴趣。 JPEG文件具有多个带有适当大小标记的元数据段。 IPTC的段容器为:

App13 -以FF ED XX XX ..开头

8BIM IPTC文本元数据-以38 42 49 4D 04 04 00 00 00 00 XX XX ..开头

IPTC 字段以1C 02 50 XX XX ..开头(0x50 = 80,IPTC字段#80)。

(XX XX = 2个字节的长度字,描述了提到的段数据的大小)。

JPEG文件和元数据中是否还有其他尺寸标记需要注意?在将元数据段添加到自定义IPTC字段时,是否需要增加其大小?

如何添加将对已经包含IPTC段的所有JPEG图像起作用的自定义元数据字段(例如#225)?

在C#中工作,但这是关于字节操作的问题,因此我想语言无关紧要。

最佳答案

由于没有人回答,我将解释我的所作所为。

广告1。
我上面提到的文件标记足以操纵IPTC。

广告2。
在字节级别进行手动IPTC操作期间,如果不小心删除或覆盖现有字节,特别是如果它们是标记(某些JPEG文件部分的标题),则很容易损坏文件。

广告3.必须使用新的元数据字段(内容大小+ 5个IPTC header 字节)来查找和增加App13以及适当的8BIM和IPTC标记。因此,例如,要添加新字段#09,您必须找到8BIM IPTC段(38 42 49 4D 04 04 00 00 00 00 XX XX),并用新的字长增加XX XX个字节。然后增加包装的App13段(在8BIM前找到最后一个FF ED XX XX段)大小,最后在8BIM末尾(由于段长度字节而知道结束),您只需添加新的IPTC字段,例如1C 02 09 00 05-添加长度为5的元数据字段#09。以下5个字节将被视为字段内容=您添加的单词。

是的,这有点困惑,但是有效:-)

09-25 22:20