Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Compression 有没有办法预测png的大小?_Compression_Png_Clipboard - Fatal编程技术网

Compression 有没有办法预测png的大小?

Compression 有没有办法预测png的大小?,compression,png,clipboard,Compression,Png,Clipboard,我正在实现剪贴板,我想为png图像分配一次内存。有没有办法预测png文件的最大大小 PNG图像包括以下几项: 签名和基本元数据(图像大小和类型) 调色板(仅当图像被索引时) 原始像素数据 可选元数据(辅助块) 图像块结束 项目1的大小是固定的:8+12+11=31字节 项目2的大小(如果需要)最多为12+3*256=780字节 项目5的大小是固定的:12字节 第3项,原始像素数据,通常是最重要的一项。过滤后的未压缩数据总计为 FUD=(W*C*8/BPC+1)*H字节 其中,W=像素宽度,H=像

我正在实现剪贴板,我想为png图像分配一次内存。有没有办法预测png文件的最大大小

PNG图像包括以下几项:

  • 签名和基本元数据(图像大小和类型)
  • 调色板(仅当图像被索引时)
  • 原始像素数据
  • 可选元数据(辅助块)
  • 图像块结束
  • 项目1的大小是固定的:8+12+11=31字节

    项目2的大小(如果需要)最多为12+3*256=780字节

    项目5的大小是固定的:12字节

    第3项,原始像素数据,通常是最重要的一项。过滤后的未压缩数据总计为

    FUD=(W*C*8/BPC+1)*H字节

    其中,W=像素宽度,H=像素高度,C=通道(3个为RGB,1个为调色板或灰度,4个为RGBA,2个为GA),BPC=每个通道的位数(通常为8)

    这是用ZLIB压缩的。实际上不可能确定压缩率。实际上,人们可能会假设在最坏的情况下,压缩流将比原始流多几个字节。 然后,item 3的大小将大约绑定为(同样假设IDAT块大小相当小,为8192字节)


    第4项(辅助块数据)实际上是不可能绑定的。

    也许这个答案可以帮助您,但实际上。。。。。。
     (FUD + 6)(1 + 12/8192) ~ FUD