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 系数。
在逐行扫描中,这个值意味着很多。
我正在逐字节解析 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 系数。
在逐行扫描中,这个值意味着很多。