我正在尝试解析 png 文件,但我似乎丢失了一些东西。
我的测试图像如下:https://www.w3.org/Graphics/PNG/alphatest.png
解析文件时,我的
BTYPE
值(https://www.ietf.org/rfc/rfc1951.txt)最终为3,这是保留/无效的。
在下图中,您可以看到我认为指定了
BFINAL
和 BTYPE
值的位置:
我认为
IDAT
值之后的第一个字节指定 zlib method flag
,第二个字节指定 additional flag
,引导我到第三个字节(在图像中选择),我认为这是 BFINAL
的正确字节,并且BTYPE
。您可以看到该值为 0x62
或 98
,其二进制表示为 01100010
。
这意味着
BFINAL=0
和 BTYPE=0b11=3
是不允许的。
我期望
BTYPE
值是 0
、1
或 2
。
完整阅读 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
(固定)。