|
|
51CTO旗下网站
|
|
移动端

Pngquant:Linux上压缩PNG图像的命令行实用工具

Pngquant是一款免费开源的跨平台命令行有损PNG压缩工具。它基于可移植的libimagequant库,用C99编写。可通过将PNG图像转换成更高效的8位PNG格式来显著减小文件大小,并保留完整的alpha透明度。

作者:布加迪编译来源:51CTO|2019-09-04 09:00

【51CTO.com快译】Pngquant是一款免费开源的跨平台命令行有损PNG压缩工具。它基于可移植的libimagequant库,用C99编写。可通过将PNG图像转换成更高效的8位PNG格式来显著减小文件大小,并保留完整的alpha透明度。你可能已知道,8位PNG文件常常比24/32位PNG文件小60%至80%。用Pngquant压缩的图像与所有Web浏览器和操作系统完全兼容。 Pngquant可以一次性压缩一个或多个图像。

功能

Pngquant有下列功能:

  • 支持多个PNG文件的批量转换。
  • 高品质的调色板生成。
  • 使用Median Cut量化算法来优化图像。
  • 可以与shell脚本、GUI和服务器端软件轻松地集成。
  • 转换成所需质量的图像,跳过无法转换成所需质量的图像。
  • 多核支持和英特尔SSE优化。

安装

Pngquant可通过多种方式来安装。

从发行版的代码库安装Pngquant

Pngquant存在于大多数Linux发行版的默认代码库中。

在Arch Linux及变体上,Pngquant存在于[Community]代码库中。启用Community代码库,使用Pacman安装它,如下所示:

  1. $ sudo pacman -S pngquant 

在Debian、Ubuntu或Linux Mint上:

  1. $ sudo apt install pngquant 

在Ubuntu系统上,你需要启用[Universe]代码库来安装Pngquant。

要启用Universe代码库,请执行:

  1. $ sudo add-apt-repository universe 

在Fedora上:

  1. $ sudo dnf install pngquant 

在openSUSE上:

  1. $ sudo zypper install pngquant 

在CentOS上:

  1. $ sudo yum install epel-release 
  2.  
  3. $ sudo yum install pngquant 

检查已安装的Pngquant版本:

  1. $ pngquant -V 
  2.  
  3. 2.5.0 (June 2015) 

默认代码库中可用的Pngquant版本可能很旧。如果你想要最新版本,请从源代码编译并手动安装,如下所示。

从源代码安装Pngquant

先安装必要的依赖项。

在Debian和Ubuntu上:

  1. $ sudo apt install git gcc cmake libpng-dev pkg-config 

在CentOS和Fedora上:

  1. $ sudo yum install git libpng-devel gcc cmake 

接下来,用git clone克隆最新版本的Pngquant:

  1. $ git clone --recursive https://github.com/kornelski/pngquant.git 

上述命令将下载Pngquant GitHub代码库的内容,并将其保存在当前工作目录中名为“pngquant”的文件夹中。

切换到Pngquant目录:

  1. $ cd pngquant 

最后,运行以下命令来编译和安装Pngquant:

  1. $ make 
  2.  
  3. $ sudo make install 

Pngquant将默认安装在/usr/local/bin位置。如果要将它安装在另一个目录中,运行:

  1. $ ./configure --prefix = dir && make 

将“dir”换成你的路径。你需要先运行该命令,然后运行“sudo make install”命令。

检查Pngquant版本:

  1. $ pngquant -V 
  2.  
  3. 2.12.5 (July 2019) 

看到了吗?这是最新版本。

使用Cargo安装Pngquant

也可以使用Cargo软件包管理器安装Pngquant。先按照下列链接中的说明安装Rust。

《在Linux中安装Rust编程语言》(https://www.ostechnix.com/install-rust-programming-language-in-linux/)

用git clone克隆最新版本的Pngquant:

  1. $ git clone --recursive https://github.com/kornelski/pngquant.git 

最后使用Cargo构建和安装Pngquant,如下所示:

  1. $ cd pngquant 
  2.  
  3. $ sudo cargo build --release 

至于其他安装方法,请参阅Pngquant官方安装页面(https://pngquant.org/install.html)。

使用Pngquant在Linux上压缩PNG图像

Pngquant的使用很简单,不需要任何特殊技能就可以使用它。

我在当前目录中有名为“ostechnix.png”的PNG图像文件。让我告诉你它的大小。

  1. $ du -sh ostechnix.png 
  2.  
  3. 152K ostechnix.png 

如你所见,图像大小是152k。

压缩PNG图像

现在不妨使用命令压缩上述图像:

  1. $ pngquant ostechnix.png 

上述命令将压缩ostechnix.png文件并将其保存为名为“ostechnix-fs8.png”的新文件。默认情况下,Pngquant将使用与输入文件名相同的输出文件名,最后使用后缀-or8.png或-fs8.png。这意味着它不会覆盖源文件。如果你对压缩率不满意,只需删除压缩文件并保留原始压缩文件。

不妨再次检查压缩图像文件的大小:

  1. $ du -sh ostechnix-fs8.png 
  2.  
  3. 48K ostechnix-fs8.png 

使用Pngquant压缩PNG图像

看到了吗?Pngquant已将152k大小的图像缩小到48k。的确干得漂亮。使用任何图像查看器打开图像,并进行比较。原始图像和压缩图像的质量差异不大。两个图像看起来几乎一样!

压缩时显示状态消息

默认情况下,Pngquant压缩图像时不显示幕后发生的事情。如果你想查看状态消息,使用该命令:

  1. $ pngquant ostechnix.png --verbose 
  2. ostechnix.png: 
  3.  
  4. conserving memory 
  5.  
  6. read 152KB file 
  7.  
  8. corrected image from gamma 2.2 to sRGB gamma 
  9.  
  10. made histogram...1854 colors found 
  11.  
  12. selecting colors...4% 
  13.  
  14. selecting colors...25% 
  15.  
  16. selecting colors...28% 
  17.  
  18. selecting colors...49% 
  19.  
  20. selecting colors...69% 
  21.  
  22. selecting colors...90% 
  23.  
  24. selecting colors...100% 
  25.  
  26. moving colormap towards local minimum 
  27.  
  28. eliminated opaque tRNS-chunk entries...61 entries transparent 
  29.  
  30. mapped image to new colors...MSE=0.055 (Q=99) 
  31.  
  32. writing 256-color image as ostechnix-fs8.png 
  33.  
  34. No errors detected while quantizing 1 image. 

现在你将看到压缩进行时的进度。

压缩多个PNG图像

Pngquant还可以转换多个图像。下列命令将压缩当前工作目录中的picture1.png和picture2.png。

  1. $ pngquant picture1.png picture2.png 

此外,我们可以移动目录中的所有文件并一次性压缩。比如说,想转换名为“/home/sk/images”的文件夹中的所有图像,请运行:

  1. $ pngquant /home/sk/images/*.png 

更改输出文件名后缀

如上所述,输出文件名与输入名称一样,只不过以“-fs8.png”和“- or8.png”结尾。然而你可以根据需要更改后缀,如下所示。

  1. $ pngquant ostechnix.png --ext linux.png 

该命令将压缩ostechnix.png文件并将其保存为ostechnixlinux.png。

如果压缩文件的大小大于原始文件,跳过保存文件

如果转换后的文件大于源文件,压缩还有什么意义?这种转换不值得,因此我们跳过这一点,如下所示。

  1. $ pngquant --skip-if-larger ostechnix.png 

只有转换后的文件小于原始文件,上述命令才会保存它。

将转换后的文件保存在不同的路径

默认情况下,Pngquant会将输入和输出图像文件保存在同一目录中。如果你要将输出文件保存在其他位置,命令将是:

  1. $ pngquant ostechnix.png --output Documents/output.png 

该命令将压缩ostechnix.png并将其保存为Documents目录中的output.png。

以自定义质量压缩图像

Pngquant尽可能压缩图像。我们还可以手动设置图像质量。Pngquant允许我们使用min和max这两个参数,将图像质量设置在范围0(最差)到100(完美)。

下面例子将最低图像质量设置为60,将最高质量设置为80。

  1. $ pngquant ostechnix.png --output Documents/output.png 

如果转换导致质量低于最低质量,则不保存图像。

剥离图像元数据

图像元数据是关于图像的一组数据。它包括有关图像的所有信息,比如图像格式、相机设置、DPI、图像的日期和时间、标题和注释和地理位置等。

如果你不需要元数据,可以使用Pngquant来删除,如下所示:

  1. $ pngquant --strip image.png 

至于更多详细信息,请参阅手册页。

  1. $ man pngquant 

原文标题:Pngquant – A Command-line Utility To Compress PNG Images On Linux,作者:SK

【51CTO译稿,合作站点转载请注明原文译者和出处为51CTO.com】

【编辑推荐】

  1. 超实用:14种性能监控与负载测试工具
  2. 运维必备Linux的20个常用命令
  3. 网络管理员的5款网络配置管理工具,收藏了
  4. 如何在 Linux 上重命名一组文件
  5. Linux运维会被淘汰吗?
【责任编辑:华轩 TEL:(010)68476606】

点赞 0
分享:
大家都在看
猜你喜欢

订阅专栏+更多

这就是5G

这就是5G

5G那些事儿
共15章 | armmay

114人订阅学习

16招轻松掌握PPT技巧

16招轻松掌握PPT技巧

GET职场加薪技能
共16章 | 晒书包

371人订阅学习

20个局域网建设改造案例

20个局域网建设改造案例

网络搭建技巧
共20章 | 捷哥CCIE

757人订阅学习

读 书 +更多

精通正则表达式(第3版)

随着互联网的迅速发展,几乎所有工具软件和程序语言都支持的正则表达式也变得越来越强大和易于使用。本书是讲解正则表达式的经典之作。本书...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊

51CTO服务号

51CTO官微