我正在逐字节解析Java中的JPG。然后,我一个字节一个字节地写相同的图像,但是遇到了一个奇怪的问题。我尝试查看规格,但没有参考。
在SOS部分的末尾,有三个字节,大多数消息来源说这是“跳过”。但是如果我写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还是该值取决于其他因素?
答案 0 :(得分:1)
在顺序JPEG扫描中,此值没有意义。该标准说将其设置为63,但这并没有告诉解码器。您必须在顺序扫描中处理所有64个DCT系数。
在逐行扫描中,此值表示很多。