本文译自:Pngquant – A Command-line Utility To Compress PNG Images On Linux
译者:EmuLab
校对:OpenView
原文及本文遵循:[CC -BY-NC协议]
Pngquant是一个自由、开源的跨平台命令行PNG无损压缩工具。其基于一个由C99编写的可移植libimagequant库。它通过将PNG图像转换为更高效的8位格式并保留完整的alpha透明度来显著减小文件尺寸。也许你已经知道了,8位的PNG文件通常比24/32位的PNG文件要小60-80%。使用Pngquant压缩的文件在所有的浏览器和操作系统上都是完全兼容使用的。Pngquant可以一次性压缩一个或多个图像。
特性
Pngquant 具有如下特性:
- 支持多PNG文件的批处理转换
- 生成高质量色板
- 使用中位剪切量化算法(median cut quantization)来优化图像
- 可以很容易地集成到shell脚本、GUI和服务端软件中
- 以预设的质量来转换图像,并且跳过不能满足预设质量转换的图像
- 支持多核以及intel的SSE优化
安装
可以通过多种方式安装Pngquant
从发行版的仓库中安装Pngquant
Pngquant在大多数Linux发行版的默认仓库中都可以获取。
在Arch Linux及其衍生发行版上,Pngquant在[Community]仓库中。启用Community仓库,然后就可以使用pacman来安装它:
$ sudo pacman -S pngquant
在Debian,Ubuntu和Linux Mint系统上:
$ sudo apt install pngquant
在Ubuntu系统上,你需要启用[Universe]仓库来安装Pngquant。
要启用Universe仓库,运行:
$ sudo add-apt-repository universe
在 Fedora上:
$ sudo dnf install pngquant
在 openSUSE上:
$ sudo zypper install pngquant
在 CentOS上:
$ sudo yum install epel-release$ sudo yum install pngquant
检查安装的Pngquant的版本:
$ pngquant -V2.5.0 (June 2015)
默认仓库中的Pngquant的版本可能是旧版本。如果你想要安装最新版本的Pngquant,可以手动从源码编译并安装该软件。
从源码安装Pngquant
首先安装必要的依赖。
在Debian,Ubuntu上运行:
$ sudo apt install git gcc cmake libpng-dev pkg-config
在CentOS,Fedora上运行:
$ sudo yum install git libpng-devel gcc cmake
下一步,使用git克隆最近版本的Pngquant:
$ git clone --recursive https://github.com/kornelski/pngquant.git
上面的命令将会下载Pngquant的GitHub仓库,并将其保存到你当前工作目录下的"pngquant"文件夹中。
切换到"pngquant"目录:
$ cd pngquant
最后,运行下面的命令来编译安装Pngquant:
$ make$ sudo make install
Pngquant将会被默认安装到/usr/local/bin路径。如果你想安装在其它位置,运行:
$ ./configure --prefix=dir && make
将dir替换为你想要的安装路径。你需要运行该命令然后在运行"sudo make install"明星。
检查Pngquant版本:
$ pngquant -V2.12.5 (July 2019)
看见了吗?它是最新版本。
使用Cargo安装Pngquant
Pngquant也可以通过Cargo包管理器来进行安装。首先,安装Rust。
然后使用git克隆最新版本的Pngquant:
$ git clone --recursive https://github.com/kornelski/pngquant.git
最后,像下面这样构建和安装Pngquant。
$ cd pngquant$ sudo cargo build --release
对于其它安装方法,请参考Pngquant的官方安装教程。
使用Pngquant在Linux上压缩PNG图像
Pngquant的使用非常简单并且不需要什么特殊的技巧来使用它。
我在当前目录下有一个"ostechnix.png"的PNG文件。让我给你看一下它的尺寸:
$ du -sh ostechnix.png 152K ostechnix.png
如你所见,图像的尺寸是152kb。
压缩一个PNG图像
想在我们使用下面的命令来压缩上面的图像:
$ pngquant ostechnix.png
上面的命令会压缩ostechnix.png文件,并将其保存为一个新的叫做"ostechnix-fs8.png"的文件。Pngquant默认会为输入文件名添加一个后缀-or8.png或者-fs8.png来作为输出文件名。这意味着它不会覆写原文件。如果你对压缩比不满意,只需要删除压缩文件然后保留下原来的文件、。
让我们再次检查一下压缩后的文件尺寸:
$ du -sh ostechnix-fs8.png 48K ostechnix-fs8.png
看见了吗?Pngquant将152kb的图像减小到了48kb。它完成了一个漂亮的工作。使用任何图像查看器打开该图像。你会发现原始的图像与压缩后的图像几乎看不出任何差别!
压缩时显示状态信息
Pngquant默认在工作时不会显示正在进行的工作等信息。如果你想查看状态信息,使用这个命令:
$ pngquant ostechnix.png --verboseostechnix.png:conserving memoryread 152KB filecorrected image from gamma 2.2 to sRGB gammamade histogram...1854 colors foundselecting colors...4%selecting colors...25%selecting colors...28%selecting colors...49%selecting colors...69%selecting colors...90%selecting colors...100%moving colormap towards local minimumeliminated opaque tRNS-chunk entries...61 entries transparentmapped image to new colors...MSE=0.055 (Q=99)writing 256-color image as ostechnix-fs8.pngNo errors detected while quantizing 1 image.
现在你会在压缩时看到进度信息。
压缩多个PNG图像
Pngquant也可以转换多个图像。下面的命令将会在当前目录下压缩picture1.png和picture2.png文件。
$ pngquant picture1.png picture2.png
同样,我们可以将所有文件移动到一个目录并一次性压缩它们。例如,要压缩所有的在/home/sk/images目录下的文件,运行:
$ pngquant /home/sk/images/*.png
改变输出文件后缀
就像前面说的一样,输出文件名与输入文件名是一致的,除了其会以-fs8.png或者-or8.png结束。然而,你可以按照你想要的方式来修改后缀。
$ pngquant ostechnix.png --ext linux.png
这个命令将会压缩ostechnix.png文件,并将其保存为ostechnixlinux.png文件。
在压缩文件大于原始文件时放弃保存压缩文件
如果压缩后的文件比原始文件尺寸还要大有什么意义?该转换是不值得的,因此我们可以像下面这样跳过它。
$ pngquant --skip-if-larger ostechnix.png
上面的命令将只会保存比原始文件小的压缩文件。
将转换后的文件保存到不同的路径
Pngquant默认将输出文件保存到原文件所在的路径。如果你想保存文件到其它位置,相应的命令是:
$ pngquant ostechnix.png --output Documents/output.png
这个命令将会压缩ostechnix.png并将其保存为Document目录下的output.png文件。
自定义压缩质量
Pngquant会尽可能地压缩文件。同样我们也可以手动设置压缩的质量。Pngquant允许我们通过min和max参数设置图像质量在范围0(最差)到100(完美)之间。
下面的例子设置最差图形质量为60而最佳质量为80:
$ pngquant --quality=60-80 image.png
如果转换结果低于最小质量,图像将不会被保存。
剥离图像元数据
图像元数据是关于图像的一系列数据。它包括一个图像的信息,比如图像格式,相机设置,DPI,日期,标题,备注,地理位置等。参考下面的文章来了解如何查看图像的元素局。
如何在Linux上查看图像元数据
如果你不需要元数据,你可以很简单的使用Pngquant移除它:
$ pngquant --strip image.png
欲知更多细节,查看man page。
$ man pngquant
我已经使用Pngquant很多年了。它帮助我将PNG文件压缩接近70%的程度,如果你在寻找一个PNG图像优化压缩工具,Pngquant也许会是一个不错的选择。
推荐阅读(点击跳转):
如何方便地在Linux上查询硬件信息并生成报告
3个重启Linux系统的命令(以及4个安全实现的方式)
如何轻松地在命令行上同时移动多种类型的文件?
GameHub:将所有的游戏统一到一个屋檐(平台)下
您可能想知道的'top'命令行实用程序的一些替代方案
如何实现更改Linux终端字体的种类和大小
mktemp命令教程,包含初学者示例
Linux中那些我们赖以为生的Bash别名
Linux 命令 chown 简介
喜欢使用Linux办公、学习、hack的朋友们可以点击关注小编,小编将竭力提供更多内容给大家交流~