PNG可以以不同的方式进行优化。
为了减少带宽使用和数据传输,减少对环境的影响,减少网站的PNG大小似乎是一个不错的选择。这是由谷歌和其他服务推荐的。
但是,优化PNG是否会对计算机读取CPU负载以呈现CPU负载产生影响?换句话说,缩小PNG尺寸以优化尺寸是限制环境影响的好主意吗?
发布于 2017-07-13 05:18:39
优化PNG对计算机读取CPU负载以呈现CPU负载有影响吗?换句话说,缩小PNG尺寸以优化尺寸是限制环境影响的好主意吗?
我不确定一个问题来自另一个问题,但关于第一个问题:
不,努力优化PNG压缩,使图像变小,只对压缩机一侧产生影响。在客户端(解压缩)方面,速度或CPU使用率的差异实际上为零。
更准确地说,PNG压缩主要受两个因素的影响:“像素滤波”算法/策略(特定于PNG)和ZLIB压缩级别。优化第一个不影响解压缩(“未过滤”逻辑是一个和相同的)。第二个因素对减压速度(it might even be slightly beneficious)影响很小或没有影响。
发布于 2017-07-14 13:40:10
正如@leonbloy在他的回答中所指出的,zlib压缩级别对解压缩速度几乎没有或根本没有影响。然而,PNG滤波器的选择确实有一个显著的效果: AVG和PAETH滤波器都需要更多的内存和CPU时间去过滤,而不是简单的过滤器。
Libpng允许您通过"png_set_filter()“函数来控制这一点。若要使用自适应滤波进行最大压缩,请使用
png_set_filter(write_ptr, 0, PNG_ALL_FILTERS);为了避免较慢的AVG和PAETH滤波,请使用
png_set_filter(write_ptr, 0, PNG_NONE_FILTER|PNG_SUB_FILTER|PNG_UP_FILTER);或者使用libpng-1.6.22及更高版本,您可以更方便地使用
png_set_filter(write_ptr, 0, PNG_FAST_FILTERS);对于pngcrash-1.8.1或更高版本,您可以使用
pngcrush -speed file.png file_pc.png若要选择NONE、SUB和UP过滤器,但要避免AVG和PAETH (请注意pngcrush也有"-fast“选项,但这是为了不同的目的,即选择快速压缩方法)。
当输出的预期用途是通过网络向应用程序传输时,文件大小是主要影响,您可能希望使用最大压缩。但是当文件将从本地磁盘或内存中访问时,解码速度将占主导地位,您可能希望使用“速度”优化,这将使文件大小有所增加,以获得更快的解码速度。
https://stackoverflow.com/questions/45058742
复制相似问题