使用 Jpegoptim 在 Ubuntu 中優化 JPEG/JPG 圖像

當今智能手機和數碼相機等照片捕捉設備的圖像分辨率日益提高。 當我們必須共享這些圖像,將它們上傳到雲設施,甚至將它們保存在存儲受限的設備上時,真正的交易就來了。 平面設計師也必須處理同樣的問題,但他們配備了可以壓縮圖像的工具,以便可以輕鬆地與利益相關者共享。

對於 Ubuntu,有許多圖形實用程序可以讓您優化和壓縮 jpeg,但在這裡我們將討論一個名為 Jpegoptim 的命令行工具。 這對於喜歡使用最少的系統資源執行任務的終端用戶尤其有用。 Jpegoptim 可以幫助您壓縮您的 jpeg、jpg 和 jfif 文件,無論是否有質量損失,這取決於您要查找的內容。

在本文中,我們將描述如何在 Ubuntu 上安裝命令行實用程序 Jpegoptim。 我們還將解釋您可以使用此應用程序優化和壓縮 jpeg 圖像文件的各種方法。 該文章還將使您能夠編寫和執行 bash 將自動壓縮位於單個目錄中的所有 jpeg 的過程的腳本。

我們已經在 Ubuntu 18.04 LTS 系統上運行了本文中提到的命令和過程。

在 Ubuntu 上安裝 Jpegoptim

Jpegoptim 可以通過官方 Ubuntu 存儲庫輕鬆獲得,並且可以使用 apt-get 命令通過命令行輕鬆安裝。

通過系統應用程序啟動器搜索或通過 Ctrl+Alt+T 快捷方式打開您的終端應用程序。

下一步是通過以下命令更新系統的存儲庫索引:

$ sudo apt-get update

這有助於您從 Internet 安裝最新可用版本的軟件。 請注意,只有授權用戶才能在 Ubuntu 上添加、刪除和配置軟件。

現在您已準備好安裝 Image Jpegoptim; 您可以通過運行以下命令來做到這一點 sudo:

$ sudo apt-get install jpegoptim

系統可能會詢問您的密碼 sudo 並為您提供 Y/n 選項以繼續安裝。 Enter Y 然後按回車鍵; 該軟件將安裝在您的系統上。 但是,此過程可能需要一些時間,具體取決於您的 Internet 速度。

您可以通過以下命令檢查應用程序的版本號,並驗證它是否確實安裝在您的系統上:

$ jpegoptim --version

使用 Jpegoptim 進行圖像壓縮

現在讓我們通過以下方式來探索 Jpegoptim 的強大功能:

無損壓縮單個圖像

如果您想壓縮單個圖像而又不想影響質量,請使用以下命令:

$ jpegoptim image_name.jpg

例子:

$ jpegoptim sample.jpg

筆記: 請記住,該工具會覆蓋現有圖像,因此最好將原始圖像保存在其他地方。

如果您希望進一步壓縮圖像,您可以再次運行相同的命令。 但是,如果 Jpegoptim 達到壓縮率最高的無損圖像質量的限制,它將開始跳過壓縮。

在這種情況下,輸出將如下所示:

將圖像壓縮到另一個文件夾

如果您擔心因為 Jpegoptim 會覆蓋它而丟失原始圖像,您可以告訴該工具將壓縮圖像保存到另一個文件夾。

首先,創建一個文件夾,用於保存壓縮圖像。 如果您希望將它們保存到現有文件夾中,則無需創建新文件夾。 然後,您可以使用以下命令語法來執行壓縮:

$ jpegoptim -d ./[destination-folder] -p [image_name].jpg

為了 example:

$ jpegoptim -d ./compressed -p sample.jpg

上面的命令將壓縮我的 sample.jpg 文件並將其保存到名為“compressed”的現有文件夾中。

檢查潛在壓縮

如果您想事先查看圖像能夠壓縮多少,可以通過 Jpegoptim 模擬圖像壓縮。 以下命令實際上不會壓縮圖像,它只會告訴您如果您嘗試使用 Jpegoptim 壓縮圖像,它將被壓縮多少。

下列 example 將進一步解釋該過程:

我有一個名為 sample.jpg 的 jpg 圖像。 我將首先通過 du 命令打印其大小,如下所示:

$ du sample.jpg

然後,我將在 jpegoptim 命令中使用 -n 標誌來了解其潛在的壓縮。

$ jpegoptim -n sample.jpg

當我在使用上述 jpegoptim 命令後重新檢查它的大小時,我發現它的大小沒有變化。 這可確保帶有 -n 標誌的 jpeg 命令僅顯示未來的壓縮百分比和大小,而不會實際壓縮圖像。

壓縮圖像“有”質量損失

有時我們想壓縮我們的圖像,知道這個過程不會是無損的。 好消息是,使用 Jpegoptim,您可以指定您可以接受多少質量損失。 有兩種方法可以“有損”地壓縮圖像;

1. 使用 -m 標誌指定質量因子/百分比: 設置最大圖像質量因子(禁用無損優化模式,默認情況下啟用)。 此選項將降低使用更高質量設置保存的那些源文件的質量。 而已經具有較低質量設置的文件將使用無損優化方法進行壓縮。

以下是指定壓縮百分比的方法:

$ jpegoptim -m[percentage_in_numbers] image.jpg

這是我的原圖:

這是 10% 品質因數時的樣子:

2. 使用 –size 選項指定壓縮圖像的大小: 嘗試將文件優化到給定的大小(禁用無損優化模式)。 目標大小以千字節 (1 – n) 為單位指定

或作為原始文件大小的百分比 (1% – 99%)。

這是您可以如何為結果圖像指定大小(以 kbs 為單位):

$ jpegoptim --size=[size-in-kb] image_name.jpg

批量優化圖片文件

您可以通過多種方式使用 Jpegoptim 一次壓縮多個文件。

第一個是在單個 jpegoptim 命令中指定要壓縮的所有文件,如下所示:

$ jpegoptim file1.jpeg file2.jpg file3.jpg

該命令將覆蓋所有指定的文件和新壓縮的文件。

第二種方法是告訴 Jpegoptim 壓縮某個類型的所有文件,對於 example jpg,都在同一個文件夾中:

$ jpegoptim *.jpg

為了查看此命令的工作原理,我使用 -l 標誌列出了我的圖片文件夾中的所有文件。 此命令將打印駐留在當前文件夾中的所有圖像的總大小:

$ ls -l

然後我使用相同的 ls -l 命令來查看 Jpegoptim 命令對所有文件的總大小有多大影響。 您可以在以下輸出中看到總字節數的顯著差異:

這只是兩個文件; 這樣可以節省很多空間。 整個過程的美妙之處在於您不會影響寶貴圖像的質量。 當然,您可以對 Jpegoptim 支持的其他文件格式執行相同操作。

第三個也是一個非常有用的選項是,您甚至可以使用 shell 腳本來自動壓縮位於當前目錄中的單一類型的所有文件。 操作方法如下:

用於壓縮當前目錄中所有 jpg 文件的 Bash 腳本

本節將解釋如何編寫一個 shell 腳本,將當前目錄中的所有 jpg 壓縮到一個名為“compressed”的文件夾中。 該腳本不會創建文件夾; 它只會將輸出保存到以此名稱創建的文件夾中。

首先,移動到我們將創建腳本的 Documents 文件夾:

$ cd Documents

注意:您可以將腳本保存在您喜歡的任何位置。 建議您在同一文件夾中創建所有腳本,以免忘記保存它們的位置。 我個人更喜歡將所有腳本保存在 Documents 文件夾中。

創建腳本

在您最喜歡的文本編輯器之一中打開一個新的腳本文件。 我們將使用 nano 編輯器打開一個名為 compressAll.sh 的空腳本文件

$ nano compressAll.sh

在該空文件中,添加以下腳本。

#!/bin/sh
# compress all *.jpg files in the current directory
# and place them in ./compressed directory
# with the same modification date as original files.

for i in *.jpg; do jpegoptim -d ./compressed -p "$i"; done

小費: 而不是將整個腳本輸入您 bash 文件,您可以從這裡複製它並使用 Ctrl+Shift+V 粘貼到終端中,或者使用右鍵單擊菜單中的粘貼選項。

這是您的文件的樣子:

現在,通過 Ctrl+X 快捷方式退出文件。 然後系統會要求您將文件保存在“Save 修改緩衝區?” 迅速的。 輸入 Y 然後點擊 Enter; 您的腳本文件現在保存在當前文件夾中。

為了使當前用戶可以執行此文件,請在終端中運行以下命令:

$ chmod +x compressAll.sh

為了運行腳本,將當前目錄更改為要壓縮其 jpg 的目錄(在我的例子中是圖片目錄)。 確保該目錄包含名為“compressed”的文件夾。 如果它不存在,請在運行腳本之前創建一個。

運行腳本

最後,運行腳本如下:

$ /home/[username]/Documents/compressAll.sh

該命令將執行 bash 來自您創建它的文件夾中的腳本。這就是您必須指定該 .sh 文件的整個路徑的原因。

您將看到所有壓縮文件都將寫入“compressed”文件夾中。 您可以通過以下命令驗證這一點:

$ ls compressed

這完全是關於通過 Jpegoptim 實用程序進行的圖像優化。 有關更多詳細信息,您可以通過以下命令查看聯機幫助頁:

$ man jpegoptim

現在通過 Internet 共享您的圖像並將它們上傳到帶寬和存儲受限的位置應該不是問題