根据分辨率,最大PNG大小

时间:2015-07-06 11:11:40

标签: compression png

有没有办法计算可以使用PNG压缩的任何图像的最大尺寸?

我需要知道,(例如)分辨率为350x350(px)的PNG不能大于“X”KB。 (对于恒定的质量压缩,如90)

“X”值是我正在寻找的值。或者在数学表达中

350px *  350px * (90q) < X KB

我不太熟悉PNG压缩算法,但特定分辨率可能有最大值?

P.S。 :PNG在这种情况下没有alpha。

1 个答案:

答案 0 :(得分:2)

在最大的情况下,数据是不可压缩的(例如,如果图像大小为1x1,或者图像较大但包含随机不可压缩数据)。所以最大尺寸是

8 // PNG signature bytes
+ 25 // IHDR chunk
+ 12 // IDAT chunk (assuming only one IDAT chunk)
+ height //pixels
  * ( 1 // filter byte for each row
      + (width // pixels
         * 3 // Red, blue, green color samples
         * 2 // 16 bits per color sample
        )
    )
+ 6 // zlib compression overhead
+ 2 // deflate overhead
+ 12 // IEND chunk

压缩&#34;质量&#34;没有进入这个。 大多数应用程序可能会分开 将IDAT分成较小的块,通常每块8k字节, 所以在350x350图像的情况下会有 44个IDAT块,因此为IDAT块开销添加43 * 12。

作为检查,可以写入1x1 16位RGB图像 一个72字节的PNG和一个1x1的8位灰度图像 67个字节。如果图像是隔行扫描的或有任何图像 辅助块,或具有alpha通道,它会 自然就更大了。