JPEG SOS 规范

JPEG SOS specification

我正在逐字节解析 java 格式的 JPG。然后我逐字节写入相同的图像,我遇到了一个奇怪的问题。我试过查看规范,但没有看到任何参考资料。

在 SOS 部分的末尾有三个字节,大多数消息来源都说 'skip'。但是如果我写 0x00,0x00,0x00 然后 java(fx) 抱怨无效值。如果我写 0x000x3f0x00 那么就没有投诉。 (三字节序列是GIMP在原始文件中产生的)

我发现了对此的间接引用 in the GoLang repo

//  - the bytes "\x00\x3f\x00". Section B.2.3 of the spec says that for
//    sequential DCTs, those bytes (8-bit Ss, 8-bit Se, 4-bit Ah, 4-bit Al)
//    should be 0x00, 0x3f, 0x00<<4 | 0x00.

我的问题是我应该只在这个位置写 0x3f,还是这个值取决于其他东西?

在顺序 JPEG 扫描中,此值没有意义。标准说将其设置为 63,但这并没有告诉解码器任何信息。您必须在顺序扫描中处理所有 64 个 DCT 系数。

在逐行扫描中,这个值意味着很多。