我正在实现剪贴板,我想为png图像分配一次内存。有没有办法预测png文件的最大大小?
答案 0 :(得分:1)
PNG图片包含以下几项内容:
第1项的大小是固定的:8 + 12 + 11 = 31字节
第2项的大小(如果需要)最多为12 + 3 * 256 = 780字节
第5项的大小是固定的:12字节
第3项原始像素数据通常是最重要的数据。已过滤的未压缩数据为
FUD =(W * C * 8 / BPC + 1)* H字节
其中W =以像素为单位的宽度,H =以像素为单位的高度,C =通道(如果为RGB,则为3,如果为调色板或灰度,则为1,如果为RGB,则为4,如果为GA,则为2),BPC =每通道的位数(通常为8)
用ZLIB压缩。 bound precisely the worst case压缩率实际上是不可能的。在实践中,可以假设在最坏的情况下,压缩流将比原始流具有更多的字节。 那么第3项的大小将受到约束(再次假设IDAT块大小相当小,为8192字节)
(FUD + 6)(1 + 12/8192) ~ FUD
项目4(辅助数据块)实际上不可能绑定。