PNG像素数不同?

时间:2013-04-21 16:11:18

标签: image png

我有一个PNG文件。我已经解压缩了IDAT块并将其读取为16位颜色(每像素16位)并将它们保存为一维数组。 PNG文件是126x128(wxh)。但我拥有的像素数(数组长度)是16,192。因此:

        16192 <-- pixel I got
126x128=16128 <-- pixel using width and height
        -----
           64 <-- difference

这64像素过剩是什么?

修改

感谢您的回复(评论和回答),尤其是@leonbloy。

值16,192(我得到的像素)实际上是34,384字节的数据,我已将其除以BytesPerPixel

1 个答案:

答案 0 :(得分:1)

很难说你是否没有告诉我们细节(你如何计算像素数?)

一种可能的解释是,您忘记考虑每个PNG行前面都有一个字节,该字节告诉应用该行的“过滤器”(ref)。因此,IDAT块内的总字节数(在ZLIB压缩之前;并且不要忘记可以存在许多IDAT块,您必须附加所有这些块)是

Bytes = Rows x (1 +  Cols x BytesPerPixel)

如果您的图像是16位灰度(BytesPerPixel = 2),并且您正在计算Pixels = Rows x Cols = Bytes / BytesPerPixel,那么这将解释差异。