JPEG编码 - DHT段问题 - >信息字节

时间:2011-05-21 10:56:54

标签: java jpeg

我在一个jpeg文件中写DHT段。我将字节写入字节数组。

byte[] huffman_Info = {
                        //Mark as DHT Segment
                        (byte)0xff, (byte) 0xc4,
                        //length (has to be calculated later)
                        (byte)0x00, (byte) 0x15,
                        /*
                         * Info Byte:
                         * - HT information (1 byte):
                                bit 0..3: number of HT (0..3, otherwise error)
                                bit 4   : type of HT, 0 = DC table, 1 = AC table
                                bit 5..7: not used, must be 0
                         */
                        (byte)0x08


                        };

我在Info Byte中编写(测试)0x08。 这是前4个位的0000。这是我的第一个问题:这个“位0..3:HT的数量(0..3,否则错误)”是什么意思?我用谷歌搜索了它,但我发现的一遍都是相同的规格。 对于DC表,第5位是1,最后3位必须是0 0x08 = 00001000。

然而,解码工具JPEGSnoop说我的目的地ID是15,这是错误的,所以它中止了进度。为什么我的信息字节错了?

一如既往,非常感谢您的帮助

问候,丹尼尔

1 个答案:

答案 0 :(得分:1)

第一个半字节应该是0或1,第二个应该是0到3之间的数字。任何其他值都是非法的。因此该字节的唯一合法值是:

0x00 0x01 0x02 0x03 0x10 0x11 0x12 0x13

学习JPEG的最佳方法是阅读标准,实际上并不难理解。谷歌的“itu-1150.pdf”,你会发现它。