JPG 文件可以通过 FF FE 标记包含文本注释。我对此有几个问题:
如何指定评论的长度?如果注释在文件末尾,是否可以根本不指定长度?
是否可以有一个有效的 jpg 文件而没有仅包含评论的图像?这样的文件在二进制文件中会是什么样子?我假设它会是:
FF D8 - SOI:图像开始(注意后面没有帧数据) FF D9 - EOI:图像结束 FF FE - COM:文本注释 (二进制) - (文本)
JPG 文件可以通过 FF FE 标记包含文本注释。我对此有几个问题:
如何指定评论的长度?如果注释在文件末尾,是否可以根本不指定长度?
是否可以有一个有效的 jpg 文件而没有仅包含评论的图像?这样的文件在二进制文件中会是什么样子?我假设它会是:
FF D8 - SOI:图像开始(注意后面没有帧数据) FF D9 - EOI:图像结束 FF FE - COM:文本注释 (二进制) - (文本)
JPEG 元数据存储在标签结构中,如下所示:
0xFF - 标签引入
者 0xXX - 标签值
0xXX 0xXX - 大端顺序的标签长度,包括长度(2)
<标签数据(长度-2字节)>
这种结构要求每个标签最多可以包含 65534 字节的元数据。对于较大的结构,真实的长度值存储在标签数据中,并且多个标签包含整个结构。
注释标签的示例。它包括一个零终止符,但这不是必需的。
FF FE 00 08 48 45 4C 4C 4F 00 - “你好”
大多数 JPEG 段包含一个 2 字节标记(0xFFFE
在 COM 的情况下),然后是段长度(2 个字节)。有关更多详细信息,请参阅JPEG 语法和结构(维基百科)。您必须指定 COM 标记的长度字段。
只有表格(只有 DHT 和 DQT 段)JPEG 是有效的,没有图像数据。我不认为没有表格或图像数据是有效的,但至少你不需要图像数据。不确定它有多大用处,或者大多数 JPEG 软件会如何解释它......
仅 JPEG 表的用例是将其与“缩写流”一起使用(JPEG 仅具有图像数据,没有表),以在多个图像之间共享公用表。