【发布时间】:2017-04-11 04:36:54
【问题描述】:
我正在实现剪贴板,我想为 png 图像分配一次内存。有没有办法预测 png 文件的最大大小?
【问题讨论】:
-
也许这个答案可以帮助你stackoverflow.com/questions/11035715/…
-
不是真的......
标签: compression png clipboard
我正在实现剪贴板,我想为 png 图像分配一次内存。有没有办法预测 png 文件的最大大小?
【问题讨论】:
标签: compression png clipboard
一张 PNG 图像包含几样东西:
item 1 的大小是固定的:8 + 12 + 11 = 31 bytes
第 2 项的大小(如果需要)最多为 12 + 3 * 256 = 780 字节
第 5 项的大小固定:12 字节
第 3 项,原始像素数据,通常是最重要的一项。过滤后未压缩的数据量为
FUD=(W*C*8/BPC+1)*H 字节
其中 W=像素宽度,H=像素高度,C=通道(RGB 为 3,调色板或灰度为 1,RGBA 为 4,GA 为 2),BPC=每个通道的位数(通常为 8)
这是用 ZLIB 压缩的。 bound precisely the worst case 压缩率几乎是不可能的。在实践中,人们可能会假设在最坏的情况下,压缩流将比原始流多几个字节。 那么项目 3 的大小将近似为(再次假设一个相当小的 IDAT 块大小为 8192 字节)由
(FUD + 6)(1 + 12/8192) ~ FUD
第 4 项(辅助块数据)实际上无法绑定。
【讨论】: