png 解析中无效的 BTYPE 值(zlib/deflate)

问题描述 投票:0回答:1

我正在尝试解析 png 文件,但我似乎丢失了一些东西。

我的测试图像如下:https://www.w3.org/Graphics/PNG/alphatest.png

解析文件时,我的

BTYPE
值(https://www.ietf.org/rfc/rfc1951.txt)最终为3,这是保留/无效的。

在下图中,您可以看到我认为指定了

BFINAL
BTYPE
值的位置:

enter image description here

我认为

IDAT
值之后的第一个字节指定
zlib method flag
,第二个字节指定
additional flag
,引导我到第三个字节(在图像中选择),我认为这是
BFINAL
的正确字节,并且
BTYPE
。您可以看到该值为
0x62
98
,其二进制表示为
01100010

这意味着

BFINAL=0
BTYPE=0b11=3
是不允许的。

我期望

BTYPE
值是
0
1
2

png zlib deflate
1个回答
0
投票

完整阅读 RFC 非常重要。

             * Data elements are packed into bytes in order of
               increasing bit number within the byte, i.e., starting
               with the least-significant bit of the byte.

因此,对于

01100010
,BFINAL 是
0
(不是最后一个),BTYPE 是
01
(固定)。

© www.soinside.com 2019 - 2024. All rights reserved.