24位png转32位png_Pngquant:Linux上一个压缩PNG图像的命令行工具

本文译自:Pngquant – A Command-line Utility To Compress PNG Images On Linux

译者:EmuLab

校对:OpenView

原文及本文遵循:[CC -BY-NC协议]

c7fc5927b7e34cbb9ec17c4107496aeb

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
f991a70c9e2c4dd0ab043984763ce966

Compress PNG Images Using Pngquant

看见了吗?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的朋友们可以点击关注小编,小编将竭力提供更多内容给大家交流~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值