【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安装它,如下所示:

$ sudo pacman -S pngquant

在Debian、Ubuntu或Linux Mint上:

$ sudo apt install pngquant

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

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

$ sudoadd-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 -V

2.5.0 (June 2015)

默认代码库中可用的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 clone克隆最新版本的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 -V

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:

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

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

$ cd pngquant

$ sudo cargo build --release

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

使用Pngquant在Linux上压缩PNG图像

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

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

$ du -sh ostechnix.png

152K ostechnix.png

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

压缩PNG图像

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

$ pngquant ostechnix.png

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

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

$ du -sh ostechnix-fs8.png

48K ostechnix-fs8.png

使用Pngquant压缩PNG图像

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

压缩时显示状态消息

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

$ pngquant ostechnix.png--verbose

ostechnix.png:

conserving memory

read152KB file

corrected image fromgamma 2.2tosRGB gamma

made histogram...1854 colors found

selecting colors...4%

selecting colors...25%

selecting colors...28%

selecting colors...49%

selecting colors...69%

selecting colors...90%

selecting colors...100%

moving colormap towards localminimum

eliminated opaque tRNS-chunk entries...61 entries transparent

mapped image tonew colors...MSE=0.055 (Q=99)

writing 256-color image asostechnix-fs8.png

Noerrors 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并将其保存为Documents目录中的output.png。

以自定义质量压缩图像

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

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

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

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

剥离图像元数据

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

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

$ pngquant--strip image.png

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

$ man pngquant

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

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

【编辑推荐】

【责任编辑:华轩 TEL:(010)68476606】

点赞 0

linux服务器 图片压缩,Pngquant:Linux上压缩PNG图像的命令行实用工具相关推荐

  1. Linux 服务器(二)-linux安装方法之Centos安装介绍——Windows中制作USB启动盘 MacOS中制作USB启动盘

    Linux 服务器(二)-linux安装方法之Centos安装介绍--Windows中制作USB启动盘 & MacOS中制作USB启动盘 安装方法 Centos安装方法: 下载镜像 按需选择下 ...

  2. linux 命令监测,九款命令行实用工具助你监测Linux磁盘分区及使用情况

    我们在本文中将介绍多款Linux命令行实用工具,你可以用它们在Linux下检查磁盘分区. 监测一个或多个存储设备的空间使用情况是系统管理员最重要的任务之一,这有助于确保存储设备上仍有足够的闲置空间,以 ...

  3. linux 服务器图片迁移OSS

    之前做服务器图片迁移OSS 用的是最笨的方法,先把图片下载到本地,再通过工具上传到OSS上,当时因为第一次使用,不熟悉,昨天做了一个迁移,130多G的数据,这样迁移 时间太长了,通过跟阿里云的人工技术 ...

  4. Linux服务器通过rz/sz轻松上传下载文件

    Linux服务器通过命令行远程访问时,上传文件还需要ftp所以不太方便,可以使用rz这个小工具来上传不太大的文件,方法如下: 输入rz,如果提示命令不存在,证明还没有安装,以CentOS为例,安装命令 ...

  5. 远程连接Linux服务器并实现文件的上传下载

    我看网上关于远程服务器的文件上传下载教程都非常简洁~但是大多数漏掉了一些处理上的细节,这里进行一个稍微详细一点的总结. 远程连接服务器 在本机的cmd或本地Linux系统下,使用如下ssh命令进行连接 ...

  6. linux服务器开启远程连接不上,远程SSH连接服务与基本排错经验总结

    为什么要远程连接Linux系统?? 在实际的工作场景中,虚拟机界面或物理服务器本地的窗口都是很少能够接触到的,因为服务器装完系统后,都要拉到IDC机房托管,如果是购买了云主机,更碰不到服务器本地显示器 ...

  7. linux服务器查看excel文件,从Linux服务器读取存储在SharePoint上的Excel文件(运行R Studio)...

    我正在尝试读取存储在企业Intranet SharePoint站点上的Excel文件,并且使用来自使用Shiny Server在Linux服务器上运行的R Studio中的"gdata&qu ...

  8. loadrunner11 linux服务器,Loadrunner怎么执行linux服务器上的shell脚本?

    java是可以执行shell脚本的,如下: //command就是你在linux上执行脚本的字符串命令 StringBuffer command = new StringBuffer(); comma ...

  9. linux服务器搭建教程c,Linux服务器上搭建web项目环境

    一.下载并安装jdk 去官网下载linux系统上jdk的安装包jdk-8u181-linux-x64.tar.gz,在Linux的/usr目录下新建文件夹java,可以使用命令:cd /usr    ...

最新文章

  1. 【Python第六篇】Python面向对象(进阶篇)及相关(异常处理、反射)
  2. 【GAN优化】最早被用于评价GAN模型的定量指标Inception Score是什么
  3. 无意间看到的浏览器记录......
  4. fit、transform与fit_transform
  5. Linux 命令之 du -- 显示每个文件和目录的磁盘使用空间/所占用的磁盘空间大小/所使用的磁盘空间大小/查看文件和目录的大小
  6. CSS图片布局 flex(竖着的几张图片改为一排)
  7. ExtJs2.0学习系列(12)--Ext.TreePanel之第一式
  8. mtk android手机 代码问题,MTK用户必备 Android手机也能系统恢复
  9. SQL server 2005的复制(四)
  10. 图像重建计算机冷却风扇故障,维修别克英朗XT冷却风扇故障
  11. 《Android游戏开发详解》一1.8 控制流程第2部分——while和for循环
  12. python实现点击按钮_python实现点击按钮修改数据的方法
  13. Goland的常用快捷键
  14. 数字电视的格式(BT.601 BT.709 BT.2020)和接口(BT.656 BT.1120 BT.2077)
  15. php+tcpdf+表格,PHP使用tcpdf类生成PDF文件
  16. Maxscript基本数据类型(一):String
  17. AN515-43 COMPAL LA-H901P笔记本主板+小板点位图
  18. Appium-Get Clipboard(获取剪贴板)
  19. html+游戏转盘,javascript+HTML5 Canvas绘制转盘抽奖
  20. 简要介绍word文档转换为pdf格式文档的工具

热门文章

  1. Nodejs 框架express热更新
  2. 虚拟机Linux联网
  3. 元宇宙“雪崩”,林俊杰帮其登上热搜
  4. zynq中mgtx应用_ZYNQ7000性能分析
  5. 睿尔曼超轻量仿人机械臂--示教器简介使用
  6. 正大国际:期货明明看对了方向,就是被止损给洗出来了,怎么办?
  7. C++函数指针定义方法
  8. 基于MATLAB实现PCA人脸识别
  9. 设计模式-代理模式【Proxy Pattern】
  10. 全球生态旅游大使世界总决赛参赛佳丽走进南京启动美丽中国行