通过将图像转换为更有效的8-bit PNG格式 ,pngquant是一个 PNG compresor,它可以将图像转换为更有效的PNG格式。 压缩图像完全符合标准,所有浏览器和操作系统都支持它。
用法
- 多个文件的批处理转换:
pngquant *.png
- unix样式标准标准/标准链接:
... | pngquant - |.. .
要进一步减小文件大小,请尝试 optipngImageOptim或者zopflipng。
特性
- 高品质调色板生成
- 支持伽玛校正和 premultiplied alpha的高级量化算法
- 独特的抖动算法,不会向图像添加不必要的噪声
- 可以配置的质量级别
- 自动查找所需数量的颜色,并可以跳过无法转换为所需质量的图像
- 快速,现代代码
- 基于端口 libimagequant库
- 对于遗留系统或者编译器( 除了 Visual Studio 之外 ) 没有任何解决方法
- 多核支持( 通过 OpenMP ) 和英特尔SSE优化
命令行选择:
pngquant -h 查看所需参数
--quality min-max
min
和 max
是 0 ( 最差) 至 100 ( 完美)的数字,类似于 JPEG。 pngquant将使用满足或者超过 max
质量要求的最少数量的颜色。 如果转换结果以质量低于 min
质量,图像将不会保存( 如果输出到 stdin,24-bit 原始将输出),pngquant将退出状态码 99.
--ext new.png
为输出文件名设置自定义扩展( 后缀)。 默认情况下使用 -or8.png
或者 -fs8.png
。 如果使用 --ext=.png --force
选项,pngquant将覆盖在( 谨慎使用) 中的输入文件。
-o out.png
或者 --output out.png
将转换后的文件写入给定路径。 仅使用这里选项时只允许使用单个输入文件。
--skip-if-larger
如果转换不值得,则不要写入转换过的文件。
--speed N
速度/质量从 1 (。最慢,质量最高,文件最小) 到 11 (。快速,不一致的质量,轻 comperssion )。 默认为 3。建议保留默认值,除非你需要实时生成图像( 比如。 贴图平铺)。较高的速度可以使用 256色,但不处理较低数量的颜色。
--nofs
停用 floyd dithering抖动。
--floyd=0.5
控制抖动( 0 = 无,1 = 全)的级别。 请注意,=
字符是必需的。
--posterize bits
通过位数减少调色板的精度。 当图像将在低深度屏幕上显示时使用( 比如。 16位 以ARGB444格式显示或者压缩纹理)。
--strip
不复制可选的PNG块。 在 Mac ( 使用 Cocoa 读取器时) 上总是删除元数据。
简单测试:
"pngquant.exe --force --ext .png --posterize ARGB444 --verbose 1.png"
自定义一个.png资源,在当前目录运行以上代码,然后就会发现,之前的资源所占内存会小很多
# -*- coding:utf-8 -*-
import codecs
import sys
import os
import os.path
import shutil
def packerHandle(rootdir,tooldir):
for parent,dirnames,filenames in os.walk(rootdir):
for filename in filenames:
extra_name = filename.split('.')[-1]
if(str.find(extra_name,"png") == 0):
dstfilename = os.path.join(parent,filename)
yscmd = tooldir+"\pngquant.exe --force --ext .png --posterize ARGB444 --verbose" + " " + dstfilename
os.system(yscmd)
print(yscmd)
if __name__ == "__main__":
rootdir = sys.argv[1]
tooldir = sys.argv[2]
packerHandle(rootdir,tooldir)
pngquant下载链接:https://pan.baidu.com/s/1rnubqxu3Np5Y8rGCE0aG7g 提取码: ierq
来源:CSDN
作者:_Bruce
链接:https://blog.csdn.net/qq_22990635/article/details/103643671