介绍

pngquant是一个命令行工具和一个用于有损压缩PNG图像的库。转换显着减少文件大小(通常高达70%),并保留完整的alpha透明度。生成的图像与所有网络浏览器和操作系统兼容。

官网:https://pngquant.org/

GitHub源码:https://github.com/kornelski/pngquant

下载

forWindows:https://pngquant.org/pngquant-windows.zip

forMac:https://pngquant.org/pngquant.tar.bz2

安装使用

Windows和mac下都是无需安装的,可以直接使用。

mac: 终端下进入到下载的文件夹,在当前目录行执行./pngquant [参数] file 即可。

Windows: 进入下载的文件夹,可以看到两个后缀为.bat脚本,文件名就是它的功能。直接拖拽需要压缩的图片到该文件上,即可自行压缩。

参数

See pngquant -h for full list.

pngquant -h 查看完整的选项列表

--quality min-max

min and max are numbers in range 0 (worst) to 100 (perfect), similar to JPEG. pngquant will use the least amount of colors required to meet or exceed the max quality. If conversion results in quality below the min quality the image won’t be saved (if outputting to stdin, 24-bit original will be output) and pngquant will exit with status code 99.

min和max是范围从0(最差)到100(完美)的数字,类似于JPEG。pngquant将使用最少的颜色来达到或超过最大的质量。如果转换结果的质量低于最低质量,图像将不会被保存(如果输出到stdin,将输出24位的原始图像),pngquant退出并返回状态码99。

    pngquant --quality=65-80 image.png

--ext new.png

Set custom extension (suffix) for output filename. By default -or8.png or -fs8.png is used. If you use --ext=.png --force options pngquant will overwrite input files in place (use with caution).

    pngquant --ext=_new.png image.pngpngquant --ext=.png --f image.png

为输出文件设置自定义扩展名(后缀),默认是-or8.png-fs8.png。如果你使用--ext=.png --force选项,pngquant会覆盖输入文件(使用时要小心)。

-o out.png or --output out.png

Writes converted file to the given path. When this option is used only single input file is allowed.

将转换后的文件输出到指定路径下。这个参数只支持单个输入文件。

--skip-if-larger

Don’t write converted files if the conversion isn’t worth it.

如果转换后的文件不值得,则不输出。(只保留比源文件小的转换文件)

--speed N

Speed/quality trade-off from 1 (slowest, highest quality, smallest files) to 11 (fastest, less consistent quality, light comperssion). The default is 4. It’s recommended to keep the default, unless you need to generate images in real time (e.g. map tiles). Higher speeds are fine with 256 colors, but don’t handle lower number of colors well.

速度-质量转换参数从1(时间最长、质量最高、文件最小)到11(速度最快、质量不一致、轻压缩)。默认参数是4。建议保持默认值,除非需要实时生成图像(例如地图文件)。高速下处理256颜色效果不错,但是不能很好处理较少的颜色。

--nofs

Disables Floyd-Steinberg dithering.

禁止Floyd-Steinberg抖动。

--floyd=0.5

Controls level of dithering (0 = none, 1 = full). Note that the = character is required.

控制抖动级别(0=无,1=满)。注意,’ = '字符是必需的。

--posterize bits

Reduce precision of the palette by number of bits. Use when the image will be displayed on low-depth screens (e.g. 16-bit displays or compressed textures in ARGB444 format).

降低调色板精度的位数。当图像显示在低深度屏幕上时使用(例如16位显示器或ARGB444格式的压缩纹理)。

--strip

Don’t copy optional PNG chunks. Metadata is always removed on Mac (when using Cocoa reader).

不要复制可选的PNG块。元数据在Mac上总是被删除(当使用Cocoa reader时)

实用工具

shell脚本,批量压缩目录下所有文件

#!/bin/bash# 需要手动修改两个变量 # pngquant 脚本路径
pngquant_path='./pngquant.exe'
targetFile='./res'# png 图片后缀
suffix='.png' # 压缩 png
function compressPng(){file=$1 #参数1# echo "----- compress "$fileif [ -f $file ]; then#判断文件是否以 指定字段结尾echo $file | grep -q -E $suffix if [ $? -eq 0 ]; then # 0找到 1没找到 >1错误 ,-q:不输出#执行压缩`${pngquant_path} --ext=.png -f $file`flag=$?if [ $flag -eq 0 ]; then # 压缩成功echo "succeed-----"$file elseecho "failed------"$file fififi
}# 递归文件夹
function recursion_dir(){dir=$1cd $dir# 遍历for fileName in `ls`; doif [ -f $fileName ]; thencompressPng $fileNameelif [ -d $fileName ]; thenrecursion_dir $fileNamefidonecd ..
}# 入口函数
function main(){#只对复制后的目录操作if [ -d $targetFile ]; thenlocal newName=${targetFile}'/../temp-pngquant'cp -r $targetFile ${newName} # 复制的文件保存到 目标文件同级echo 'Compression begins ...'$(date)recursion_dir $newNameecho 'Compression is over ...'$(date)elseecho 'Erro: Please input target dir full path !'fi
}# execute
main

tinypng

使用pngquant压缩图片时,如果转换结果的质量低于最低质量,图像将不会被保存,这个时候就出现压缩失败的情况了。这里再介绍一种在线压缩图片的工具:tinypng。使用方法很简单,网页上有介绍:

英文网: https://tinypng.com/

中文网:https://tinify.cn

批量使用教程:使用介绍

pngquanttinypng 使用教程相关推荐

  1. 使用Docker搭建svn服务器教程

    使用Docker搭建svn服务器教程 svn简介 SVN是Subversion的简称,是一个开放源代码的版本控制系统,相较于RCS.CVS,它采用了分支管理系统,它的设计目标就是取代CVS.互联网上很 ...

  2. mysql修改校对集_MySQL 教程之校对集问题

    本篇文章主要给大家介绍mysql中的校对集问题,希望对需要的朋友有所帮助! 推荐参考教程:<mysql教程> 校对集问题 校对集,其实就是数据的比较方式. 校对集,共有三种,分别为:_bi ...

  3. mysql备份psb文件怎么打开_Navicat for MySQL 数据备份教程

    原标题:Navicat for MySQL 数据备份教程 一个安全和可靠的服务器与定期运行备份有密切的关系,因为错误有可能随时发生,由攻击.硬件故障.人为错误.电力中断等都会照成数据丢失.备份功能为防 ...

  4. php rabbmq教程_RabbitMQ+PHP 教程一(Hello World)

    介绍 RabbitMQ是一个消息代理器:它接受和转发消息.你可以把它当作一个邮局:当你把邮件放在信箱里时,你可以肯定邮差先生最终会把邮件送到你的收件人那里.在这个比喻中,RabbitMQ就是这里的邮箱 ...

  5. 【置顶】利用 NLP 技术做简单数据可视化分析教程(实战)

    置顶 本人决定将过去一段时间在公司以及日常生活中关于自然语言处理的相关技术积累,将在gitbook做一个简单分享,内容应该会很丰富,希望对你有所帮助,欢迎大家支持. 内容介绍如下 你是否曾经在租房时因 ...

  6. Google Colab 免费GPU服务器使用教程 挂载云端硬盘

    一.前言 二.Google Colab特征 三.开始使用 3.1在谷歌云盘上创建文件夹 3.2创建Colaboratory 3.3创建完成 四.设置GPU运行 五.运行.py文件 5.1安装必要库 5 ...

  7. 理解和实现分布式TensorFlow集群完整教程

    手把手教你搭建分布式集群,进入生产环境的TensorFlow 分布式TensorFlow简介 前一篇<分布式TensorFlow集群local server使用详解>我们介绍了分布式Ten ...

  8. 高级教程: 作出动态决策和 Bi-LSTM CRF 重点

    https://www.zhihu.com/question/35866596 条件随机场 CRF(条件随机场)与Viterbi(维特比)算法原理详解 https://blog.csdn.net/qq ...

  9. PyTorch 高级实战教程:基于 BI-LSTM CRF 实现命名实体识别和中文分词

    20210607 https://blog.csdn.net/u011828281/article/details/81171066 前言:译者实测 PyTorch 代码非常简洁易懂,只需要将中文分词 ...

  10. k8s核心组件详细介绍教程(配超详细实例演示)

    本文实验环境基于上篇文章手把手从零开始搭建k8s集群超详细教程 本文根据B站课程云原生Java架构师的第一课K8s+Docker+KubeSphere+DevOps学习总结而来 k8s核心组件介绍 1 ...

最新文章

  1. 一条 update 语句引起的事故,这回让开发长长记性!!
  2. SAP smartforms之Zebra print control language
  3. 阿里云服务器被挖矿程序minerd入侵的终极解决办法[转载]
  4. 记录 FreeBSD
  5. nginx proxy cache配置参数解读
  6. 100人每人100元每次一人分1元给另一人问题matalb 求解
  7. Google 放话:要教会我家宝宝开发Android App!
  8. Google 出品的 Java 编码规范,强烈推荐,权威又科学!
  9. 版本 tomcat_Tomcat爆出安全漏洞!Spring Cloud/Boot框架多个版本受影响
  10. 代刷魔兽世界监狱的脚本
  11. VS2005编译Openssl-1.1.0f
  12. 计算机联锁设备的组成及原理,铁路信号计算机联锁系统及技术分析
  13. FILD FLD FSTP
  14. 角度和弧度之间的转换
  15. 检查一个字符串是否为回文 。 回文:正着念与反着念一样,例如:上海自来水来自海上
  16. Vue获取当前的位置信息、经纬度
  17. 银行排队系统的设计与实现(源代码)
  18. 局域网内固定自己的ip
  19. AMI CORE8 OEM BIOS开发入门
  20. 优化算法——人工蜂群算法(ABC)

热门文章

  1. JAVA编译器的作用
  2. 《通用规范汉字表》背景知识词条
  3. IIS_设置64位机器上的(IIS6/IIS7)兼容32位程序
  4. 手把手教你玩转QQ的原创表情
  5. Nexus3 功能介绍
  6. 网页鼠标指针样式(cursor属性)
  7. ensp华为数通远程登录配置
  8. 遥感数字图像处理学习 一、概念及组成
  9. 曾经优秀的人,怎么就突然不优秀了。
  10. java后端如何用正则表达式_Java 正则表达式详解