云网牛站
所在位置:首页 > Linux命令 > 安装及使用pngquant在Linux命令行上压缩PNG图像

安装及使用pngquant在Linux命令行上压缩PNG图像

2019-02-12 09:39:18作者:曾秀珠稿源:云网牛站

pngquant是一个命令行实用程序和一个用于PNG图像有损压缩的库,本文就介绍安装及使用pngquant在Linux命令行上压缩PNG图像,pngquant可以将PNG图像的大小减少多达70%,同时保持完整的Alpha透明度。生成的图像与所有Web浏览器和操作系统兼容。

 

在Linux上安装pngquant

pngquant可以从你的操作系统上游存储库安装,也可以从源代码编译,从源代码构建pngquant的优点是,可以获得最新版本,而不是系统存储库中可用的软件包。

1、在CentOS/Fedora上安装pngquant

首先安装所需的依赖项:

sudo yum -y install git libpng-devel gcc cmake

然后从git克隆pngquant项目:

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

运行./configure并make以在当前目录中生成pngquant可执行文件:

cd pngquant

./configure 

make

如果你想在系统范围内安装它,请运行以下命令:

sudo make install

二进制文件将被复制到/usr/local/bin/pngquant:

$ pngquant --version

2.12.2 (November 2018)

2、在Ubuntu/Debian上安装pngquant

安装所需的依赖项:

sudo apt-get update

sudo apt-get install -y git gcc cmake libpng-dev pkg-config

克隆pongquant

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

通过运行以下命令安装它:

cd pngquant

./configure 

make

sudo make install

3、在Arch Linux/Manjaro上安装pngquant

可以使用pacman命令在Arch Linux上安装最新版本的pngquant:

sudo pacman -S pngquant

4、在Linux CLI上使用pngquant

可以使用--help选项打印所有pngquant选项:

$ pngquant --help

安装及使用pngquant在Linux命令行上压缩PNG图像

 

示例1:用pngquant压缩PNG图像

在我的笔记本电脑中,我有一个3.9MB的PNG图像,我将用pngquant压缩:

$ du -sh wallpaper-01.png

3.9M    wallpaper-01.png

使用pngquant压缩图像的基本示例是:

$ pngquant --force --quality=40-100 --strip --skip-if-larger \

--verbose wallpaper-01.png 

wallpaper-01.png:

read 3893KB file

used gAMA and cHRM chunks to transform image to sRGB colorspace

made histogram…231676 colors found

selecting colors…14%

selecting colors…28%

selecting colors…100%

moving colormap towards local minimum

eliminated opaque tRNS-chunk entries…0 entries transparent

mapped image to new colors…MSE=6.201 (Q=79)

writing 256-color image as wallpaper-01-fs8.png

Quantized 1 image.

检查目标文件的大小:

$ du -sh wallpaper-01-fs8.png

1.4M    wallpaper-01-fs8.png

你可以看到大小是1.4MB,减少了2.5MB。

如果要使用受限文件覆盖原始文件,请使用--output file选项:

$ pngquant --force --quality=40-100 --strip --skip-if-larger \

--verbose --output wallpaper-01.png  wallpaper-01.png 

wallpaper-01.png:

read 3893KB file

used gAMA and cHRM chunks to transform image to sRGB colorspace

made histogram…231676 colors found

selecting colors…6%

selecting colors…12%

selecting colors…50%

selecting colors…87%

selecting colors…100%

moving colormap towards local minimum

eliminated opaque tRNS-chunk entries…0 entries transparent

mapped image to new colors…MSE=6.111 (Q=79)

writing 256-color image as wallpaper-01.png

Quantized 1 image. 

确认:

$ du -sh wallpaper-01.png

1.4M    wallpaper-01.png

 

示例2:压缩多个PNG图像

如果在当前文件夹中有多个PNG图像,则可以使用bash for循环来压缩所有项目:

for i in *.png; do

pngquant --force --quality=40-100 --strip --skip-if-larger \

--verbose $i

done

 

示例3:搜索目录中的所有PNG图像并进行压缩

你还可以使用Linux find命令查找指定目录中的所有PNG图像(参考:使用find、locate、which、whereis命令在Linux下搜索文件和文件夹),然后压缩:

find /mysite/wp-content/uploads/ -type f -iname '*.png' -exec \

pngquant --force --quality=40-100 --skip-if-larger --strip --verbose {} --output {} \;

将/mysite/wp-content/uploads/替换为递归搜索的路径。

 

相关主题

Linux:优化和压缩JPEG和PNG图片的命令行工具

Linux命令子频道
精选文章
热门文章