pngquant有损压缩png资源

こ雲淡風輕ζ 提交于 2020-02-04 11:08:15

通过将图像转换为更有效的8-bit PNG格式 ,pngquant是一个 PNG compresor,它可以将图像转换为更有效的PNG格式。 压缩图像完全符合标准,所有浏览器和操作系统都支持它。

用法

  • 多个文件的批处理转换: pngquant *.png
  • unix样式标准标准/标准链接: ... | pngquant - |.. .

要进一步减小文件大小,请尝试 optipngImageOptim或者zopflipng。

特性

  • 高品质调色板生成
  • 支持伽玛校正和 premultiplied alpha的高级量化算法
  • 独特的抖动算法,不会向图像添加不必要的噪声
  • 可以配置的质量级别
  • 自动查找所需数量的颜色,并可以跳过无法转换为所需质量的图像
  • 快速,现代代码

命令行选择:

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

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!