我正在尝试实现PNG阅读器。
为此,我读取了 input_image.png (640x480px)的 IHDR 数据块,并通过读取获得了以下值
width 640 height 480 color depth 8 color type compression method 0 filter method 0 interlace mthod 0
之后,我尝试使用以下代码解压缩 IDAT 数据块:
def read_chunk(chunk_type,data_chunk)
if chunk_type == 'IDAT':
img_dec = zlib.decompress(data_chunk, wbits=+15)
image = np.frombuffer(img_dec, np.uint8)
image.reshape(640, 480, 3)
但是尺寸与我的解释不一致,如果我打印image_dec
缓冲区的大小,它对应的是 922080 ,但是我希望缓冲区大小为 640x480x3 = 921600 ,所以解压缩的缓冲区中还有 480 个额外的字节,为什么?