JPG 文件中的文本注释如何工作?

maf*_*afu 6 jpeg file-format header

JPG 文件可以通过 FF FE 标记包含文本注释。我对此有几个问题:

  1. 如何指定评论的长度?如果注释位于文件末尾,是否可以根本不指定长度?

  2. 是否可以有一个有效的 jpg 文件,而不包含仅包含注释的图像?这样的文件在二进制中会是什么样子?我假设它会是:

FF D8 - SOI:图像开始(注意后面没有帧数据)
FF D9 - EOI:图像结束
FF FE - COM:文字注释
(二进制)-(文本)

Bit*_*ank 5

JPEG元数据存储在标签结构中,如下所示:

0xFF - 标签介绍者
0xXX - 标签值
0xXX 0xXX - 大端顺序的标签长度​​,包括长度 (2)
<标签数据(长度-2 字节)>

这种结构要求每个标签最多可以包含65534字节的元数据。对于较大的结构,真实长度值存储在标签数据中,并且多个标签包含整个结构。

评论标签的示例。它包括一个零终止符,但这不是必需的。

FF FE 00 08 48 45 4C 4C 4F 00 - “你好”


har*_*ldK 2

  1. 大多数 JPEG 段包含一个 2 字节标记(0xFFFE对于 COM),后跟段长度(2 字节)。有关更多详细信息,请参阅JPEG 语法和结构(维基百科)。您必须指定 COM 标记的长度字段。

  2. 仅具有表(仅 DHT 和 DQT 段)JPEG 且无图像数据是有效的。我认为没有表格或图像数据的方法是无效的,但至少您不需要图像数据。不确定它有多有用,或者大多数 JPEG 软件如何解释它......

    仅表 JPEG 的用例是将其与“缩写流”(仅具有图像数据的 JPEG,无表)一起使用,以在多个图像之间共享公共表。