介绍

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. C# 多线程 线程池(ThreadPool) 2 如何控制线程池?
  2. Java abstract 关键字
  3. C++ Primer 5th笔记(4)chapter4 表达式:类型转换
  4. 20220208--CTF MISC--两道简单的MISC题目
  5. 用树莓派和PC机搭建多节点私人以太坊网络
  6. [SSCore] 开源dotnet core 版本 SuperSocket
  7. java非必填字段跳过校验,avalon2表单验证,非必填字段在不填写的时候不能通过验证...
  8. JavaScript中的const
  9. 【Python】可视化的离散傅里叶变换+快速傅里叶变换后时域信号的频域分析
  10. 董明珠宣布开启抖音直播卖货首秀,对刚“半价”直播罗永浩?
  11. Docker的Hadoop-Hbase的 Docker Hub文档
  12. MyBatis的一级缓存、二级缓存演示以及讲解,序列化异常的处理
  13. Asynchronous HTTP Requests in Android Using Volley
  14. 计算机组成原理实验基本运算器,计算机组成原理运算器实验-20210611075033.docx-原创力文档...
  15. Python垃圾回收机制:gc模块
  16. Discuz仿集思街淘宝客粉红色模板源码
  17. FTP工具,5款常用的FTP工具
  18. TD阵营折大将 芯片商凯明将面临倒闭[转]
  19. 最新价值800元的720全景云系统源码 可生成小程序带PC端 附新手搭建教程
  20. python excel计算_怎么用python导入excel计算方差

热门文章

  1. nmap扫描开放端口
  2. 计算机硬件技术基础教程mcs-51单片机原理及应用,mcs51单片机原理及应用
  3. 爱普生l360扫描仪显示无法连接计算机,USB连接喷墨机,启动Epson scan提示无法与扫描仪连接如何解决?...
  4. 数据库表设计(一):字段设计规范和命名规范
  5. rapidxml往xml文件循环写入内容
  6. JavaScript—— 常见网页特效
  7. 千里达v1000时速_重新定义性价比 千里达V1000碳架山地车 评测
  8. 【XJTUSE 计算机组成与结构笔记】第十四章 指令级并行性和超标量处理
  9. Idea系列文章2-依赖包的引入
  10. linux man手册更新,linux man手册介绍【manual】