開源軟體

Linux 下無損圖片壓縮小工具介紹

今天我們來介紹實用的小工具。我們每個人都會有很多照片。尤其是當相機拍出來的照片越來越大時,我們的手機、磁碟開始有些吃緊了。目前其實有很多 GUI 工具可進行低損,甚至無損圖片壓縮。假如我們有一大堆圖片文件分散在各個目錄下,這些工具就有那麼一點不好用了。這個時候就要看強大的命令行了。

  • jpegoptim - 用於無損壓縮優化 JPEG 文件的小工具。
  • OptiPNG - 不丟失任何信息的 PNG 文件優化壓縮小程序。

安裝 jpegoptim

Debian 系列

$ sudo apt-get install jpegoptim

RedHat 系列

在 RHEL、CentOS、Fedora 這樣的系統上,你需要先安裝並啟用 EPEL 倉庫。你可以直接用下面這條命令安裝啟用。

$ sudo yum install epel-release
$ sudo  dnf install epel-release    [On Fedora 22+ versions]

OK,繼續安裝。

$ sudo yum install jpegoptim
$ sudo dnf install jpegoptim    [On Fedora 22+ versions]

這樣就安裝好了,接下來看看怎麼用起來。

使用 jpegoptim

jpegoptim 的用法很簡單。

$ jpegoptim filename.jpeg
$ jpegoptim [options] filename.jpeg

我們選一張 LinuxStory 網站上的 jpg 圖片來做演示,我們可以在壓縮前後通過 du 命令來查看文件的大小。

ubuntu@VM-166-1-ubuntu:~/images$ du -sh LS.jpg
656K    LS.jpg
ubuntu@VM-166-1-ubuntu:~/images$ jpegoptim LS.jpg
LS.jpg 2838x1419 24bit N Exif IPTC ICC Adobe  [OK] 667464 -- 583233 bytes (12.62%), optimized.
ubuntu@VM-166-1-ubuntu:~/images$ du -sh LS.jpg
576K    LS.jpg
ubuntu@VM-166-1-ubuntu:~/images$

隨便用哪一個圖片查看軟體打開這張圖片,你絕對看不錯壓縮前後有什麼區別。默認壓縮會儘可能的保證和原圖的質量接近。

如果你還嫌不夠小,那麼可以犧牲一些質量。比如我們可以指定壓縮到指定的文件大小。比如我們可以把文件壓縮到 250K 。

ubuntu@VM-166-1-ubuntu:~/images$ jpegoptim --size=250k LS.jpg
LS.jpg 2838x1419 24bit N Exif IPTC ICC JFIF  [OK] 583233 -- 256134 bytes (56.08%), optimized.
ubuntu@VM-166-1-ubuntu:~/images$ du -sh LS.jpg
256K    LS.jpg
ubuntu@VM-166-1-ubuntu:~/images$

批量處理

命令行的工具一般都能很好的和其他工具配合使用,這樣一來,想要批量壓縮就變得很簡單了。

ubuntu@VM-166-1-ubuntu:~/images$ ls -l
total 65184
-rwxr----- 1 ubuntu ubuntu 6680532 Jan 19 12:21 DSC_0310.JPG
-rwxr----- 1 ubuntu ubuntu 6846248 Jan 19 12:21 DSC_0311.JPG
-rwxr----- 1 ubuntu ubuntu 7174430 Jan 19 12:21 DSC_0312.JPG
-rwxr----- 1 ubuntu ubuntu 6514309 Jan 19 12:21 DSC_0313.JPG
-rwxr----- 1 ubuntu ubuntu 6755589 Jan 19 12:21 DSC_0314.JPG
-rwxr----- 1 ubuntu ubuntu 6789763 Jan 19 12:21 DSC_0315.JPG
-rwxr----- 1 ubuntu ubuntu 6958387 Jan 19 12:21 DSC_0316.JPG
-rwxr----- 1 ubuntu ubuntu 6463855 Jan 19 12:21 DSC_0317.JPG
-rwxr----- 1 ubuntu ubuntu 6614855 Jan 19 12:21 DSC_0318.JPG
-rwxr----- 1 ubuntu ubuntu 5931738 Jan 19 12:21 DSC_0319.JPG

使用 find、xargs 這樣的工具可以壓縮你指定的一些文件。

ubuntu@VM-166-1-ubuntu:~/images$ find . -name "*.JPG" | xargs jpegoptim
DSC_0310.JPG 6000x4000 24bit N Exif  [OK] 6680532 -- 5987094 bytes (10.38%), optimized.
DSC_0311.JPG 6000x4000 24bit N Exif  [OK] 6846248 -- 6167842 bytes (9.91%), optimized.
DSC_0312.JPG 6000x4000 24bit N Exif  [OK] 7174430 -- 6536500 bytes (8.89%), optimized.
DSC_0313.JPG 6000x4000 24bit N Exif  [OK] 6514309 -- 5909840 bytes (9.28%), optimized.
DSC_0314.JPG 6000x4000 24bit N Exif  [OK] 6755589 -- 6144165 bytes (9.05%), optimized.
DSC_0315.JPG 6000x4000 24bit N Exif  [OK] 6789763 -- 6090645 bytes (10.30%), optimized.
DSC_0316.JPG 6000x4000 24bit N Exif  [OK] 6958387 -- 6354320 bytes (8.68%), optimized.
DSC_0317.JPG 6000x4000 24bit N Exif  [OK] 6463855 -- 5909298 bytes (8.58%), optimized.
DSC_0318.JPG 6000x4000 24bit N Exif  [OK] 6614855 -- 6016006 bytes (9.05%), optimized.
DSC_0319.JPG 6000x4000 24bit N Exif  [OK] 5931738 -- 5337023 bytes (10.03%), optimized.

現在你應該會使用 jpegoptim 對需要的 jpeg 圖片進行壓縮了。還有更多的詳細用法,你可以查看 jpegoptim 的 man 手冊。

$ man jpegoptim

安裝 OptiPNG

Debian 系列

$ sudo apt-get install optipng

RedHat 系列

與上面一樣需要 epel

$ sudo yum install optipng
$ sudo dnf install optipng    [On Fedora 22+ versions]

optipng 用法

用法依然很簡單。

$ optipng filename.png
$ optipng [options] filename.png

以 LS.png 為例,演示 optipng 命令。

buntu@VM-166-1-ubuntu:~/images$ optipng LS.png
OptiPNG 0.6.4: Advanced PNG optimizer.
Copyright (C) 2001-2010 Cosmin Truta.

** Processing: LS.png
1500x541 pixels, 4x8 bits/pixel, RGB+alpha
Input IDAT size = 806781 bytes
Input file size = 809112 bytes

Trying:
  zc = 9  zm = 8  zs = 0  f = 0     IDAT size = 732923
  zc = 9  zm = 8  zs = 0  f = 5     IDAT size = 695518
  zc = 9  zm = 8  zs = 1  f = 5     IDAT size = 670355

Selecting parameters:
  zc = 9  zm = 8  zs = 1  f = 5     IDAT size = 670355

Output IDAT size = 670355 bytes (136426 bytes decrease)
Output file size = 672098 bytes (137014 bytes = 16.93% decrease)

ubuntu@VM-166-1-ubuntu:~/images$ du -sh LS.png
664K    LS.png

正如你看到的, optipng 的壓縮效果相當好,並且幾乎沒有質量損失。

同 jpegoptim 一樣,你依然可以將 optipng 與現有的 find 、xargs 等命令組合起來進行批量 png 圖片壓縮。甚至你可以寫一個腳本對你上傳到網站的圖片進行自動壓縮。

更多細節,可以查看 optipng 的 man 手冊。

$ man optipng

小結

LinuxStory 上有很多 jpeg 、png 圖片。並且由於歷史原因這些圖片都很少被壓縮。通過這樣的工具對網站所有圖片壓縮後,節約了 30% 的磁碟空間。那麼讀者你是否也需要對你的照片壓縮呢?趕緊試試吧!


原文鏈接:https://www.tecmint.com/optimize-and-compress-jpeg-or-png-batch-images-linux-commandline/
本文鏈接:https://linuxstory.org/optimize-and-compress-jpeg-or-png-batch-images-linux-commandline/

轉載請註明出處,否則必究相關責任。

對這篇文章感覺如何?

太棒了
2
不錯
1
愛死了
1
不太好
1
感覺很糟
1
雨落清風。心向陽

    You may also like

    1 Comment

    Leave a reply

    您的電子郵箱地址不會被公開。 必填項已用 * 標註

    此站點使用Akismet來減少垃圾評論。了解我們如何處理您的評論數據

    More in:開源軟體

    開源軟體

    嵌入式 Linux 的瑞士軍刀:BusyBox

    上期文章中,筆者向各位介紹了 musl,一個 Glibc 的替代方案,它的主要優勢體現在更加整潔的代碼、更小的二進位體積和更優秀的靜態鏈接支持。而本期文章的主角:BusyBox 則是 GNU Core […]
    開源項目

    Pwnagotchi 開箱教程

    Pwnagotchi 是一個由 Bettercap 驅動的 A2C 的 「AI」,它能夠從周圍的 WiFi 環境中學習,以最大限度地利用它捕獲的可破解 WPA 密鑰材料,該材料將作為可被 hashcat 破解的 PCAP 文件收集在磁碟上。 簡單來說,Pwnagotchi ...
    開源軟體

    光速上手C++20協程

    今天來學習下怎麼使用基於C++20設計開發的協程框架async_simple(https://github.com/alibaba/async_simple)。async_simple是阿里巴巴開源的輕量級C++非同步框架。提供了基於C++20無棧協程(Lazy),有棧協程(Uthread)以及Future/Promise等非同步組件。連續兩年經歷天貓雙十一磨礪,承擔了億級別流量洪峰,具備高性能和高穩定性。