Pngquant:Linux上壓縮PNG圖像的命令行實用工具
譯文【51CTO.com快譯】Pngquant是一款免費開源的跨平臺命令行有損PNG壓縮工具。它基于可移植的libimagequant庫,用C99編寫??赏ㄟ^將PNG圖像轉(zhuǎn)換成更高效的8位PNG格式來顯著減小文件大小,并保留完整的alpha透明度。你可能已知道,8位PNG文件常常比24/32位PNG文件小60%至80%。用Pngquant壓縮的圖像與所有Web瀏覽器和操作系統(tǒng)完全兼容。 Pngquant可以一次性壓縮一個或多個圖像。
功能
Pngquant有下列功能:
- 支持多個PNG文件的批量轉(zhuǎn)換。
- 高品質(zhì)的調(diào)色板生成。
- 使用Median Cut量化算法來優(yōu)化圖像。
- 可以與shell腳本、GUI和服務(wù)器端軟件輕松地集成。
- 轉(zhuǎn)換成所需質(zhì)量的圖像,跳過無法轉(zhuǎn)換成所需質(zhì)量的圖像。
- 多核支持和英特爾SSE優(yōu)化。
安裝
Pngquant可通過多種方式來安裝。
從發(fā)行版的代碼庫安裝Pngquant
Pngquant存在于大多數(shù)Linux發(fā)行版的默認代碼庫中。
在Arch Linux及變體上,Pngquant存在于[Community]代碼庫中。啟用Community代碼庫,使用Pacman安裝它,如下所示:
- $ sudo pacman -S pngquant
在Debian、Ubuntu或Linux Mint上:
- $ sudo apt install pngquant
在Ubuntu系統(tǒng)上,你需要啟用[Universe]代碼庫來安裝Pngquant。
要啟用Universe代碼庫,請執(zhí)行:
- $ 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 -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代碼庫的內(nèi)容,并將其保存在當前工作目錄中名為“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構(gòu)建和安裝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圖像
現(xiàn)在不妨使用命令壓縮上述圖像:
- $ pngquant ostechnix.png
上述命令將壓縮ostechnix.png文件并將其保存為名為“ostechnix-fs8.png”的新文件。默認情況下,Pngquant將使用與輸入文件名相同的輸出文件名,最后使用后綴-or8.png或-fs8.png。這意味著它不會覆蓋源文件。如果你對壓縮率不滿意,只需刪除壓縮文件并保留原始壓縮文件。
不妨再次檢查壓縮圖像文件的大?。?/p>
- $ du -sh ostechnix-fs8.png
- 48K ostechnix-fs8.png
使用Pngquant壓縮PNG圖像
看到了嗎?Pngquant已將152k大小的圖像縮小到48k。的確干得漂亮。使用任何圖像查看器打開圖像,并進行比較。原始圖像和壓縮圖像的質(zhì)量差異不大。兩個圖像看起來幾乎一樣!
壓縮時顯示狀態(tài)消息
默認情況下,Pngquant壓縮圖像時不顯示幕后發(fā)生的事情。如果你想查看狀態(tài)消息,使用該命令:
- $ pngquant ostechnix.png --verbose
- ostechnix.png:
- conserving memory
- read 152KB file
- corrected image from gamma 2.2 to sRGB 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 local minimum
- eliminated opaque tRNS-chunk entries...61 entries transparent
- mapped image to new colors...MSE=0.055 (Q=99)
- writing 256-color image as ostechnix-fs8.png
- No errors detected while quantizing 1 image.
現(xiàn)在你將看到壓縮進行時的進度。
壓縮多個PNG圖像
Pngquant還可以轉(zhuǎn)換多個圖像。下列命令將壓縮當前工作目錄中的picture1.png和picture2.png。
- $ pngquant picture1.png picture2.png
此外,我們可以移動目錄中的所有文件并一次性壓縮。比如說,想轉(zhuǎn)換名為“/home/sk/images”的文件夾中的所有圖像,請運行:
- $ pngquant /home/sk/images/*.png
更改輸出文件名后綴
如上所述,輸出文件名與輸入名稱一樣,只不過以“-fs8.png”和“- or8.png”結(jié)尾。然而你可以根據(jù)需要更改后綴,如下所示。
- $ pngquant ostechnix.png --ext linux.png
該命令將壓縮ostechnix.png文件并將其保存為ostechnixlinux.png。
如果壓縮文件的大小大于原始文件,跳過保存文件
如果轉(zhuǎn)換后的文件大于源文件,壓縮還有什么意義?這種轉(zhuǎn)換不值得,因此我們跳過這一點,如下所示。
- $ pngquant --skip-if-larger ostechnix.png
只有轉(zhuǎn)換后的文件小于原始文件,上述命令才會保存它。
將轉(zhuǎn)換后的文件保存在不同的路徑
默認情況下,Pngquant會將輸入和輸出圖像文件保存在同一目錄中。如果你要將輸出文件保存在其他位置,命令將是:
- $ pngquant ostechnix.png --output Documents/output.png
該命令將壓縮ostechnix.png并將其保存為Documents目錄中的output.png。
以自定義質(zhì)量壓縮圖像
Pngquant盡可能壓縮圖像。我們還可以手動設(shè)置圖像質(zhì)量。Pngquant允許我們使用min和max這兩個參數(shù),將圖像質(zhì)量設(shè)置在范圍0(最差)到100(完美)。
下面例子將最低圖像質(zhì)量設(shè)置為60,將最高質(zhì)量設(shè)置為80。
- $ pngquant ostechnix.png --output Documents/output.png
如果轉(zhuǎn)換導(dǎo)致質(zhì)量低于最低質(zhì)量,則不保存圖像。
剝離圖像元數(shù)據(jù)
圖像元數(shù)據(jù)是關(guān)于圖像的一組數(shù)據(jù)。它包括有關(guān)圖像的所有信息,比如圖像格式、相機設(shè)置、DPI、圖像的日期和時間、標題和注釋和地理位置等。
如果你不需要元數(shù)據(jù),可以使用Pngquant來刪除,如下所示:
- $ pngquant --strip image.png
至于更多詳細信息,請參閱手冊頁。
- $ man pngquant
原文標題:Pngquant – A Command-line Utility To Compress PNG Images On Linux,作者:SK
【51CTO譯稿,合作站點轉(zhuǎn)載請注明原文譯者和出處為51CTO.com】