通過 Debian 命令行優化 Jpeg/jpg 圖片

當今智能手機和數碼相機等攝影設備的圖像分辨率日益提高。 當我們必須共享這些圖像,將它們上傳到雲端,甚至將它們存儲在存儲空間有限的設備上時,真正的技巧就來了。 平面設計師必須處理同樣的問題,但他們配備了可以壓縮圖像以便輕鬆共享的工具。

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

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

我們已經在 Debian 10 Buster 系統上運行了本文中提到的命令和過程。

在 Debian 上安裝 Jpegoptim

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

通過系統應用程序啟動器搜索打開您的終端應用程序,如下所示:

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

$ sudo apt-get 更新

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

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

$ sudo apt-get 安裝 jpegoptim

安裝 Jpegoptim

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

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

$ jpegoptim –version

檢查 jpegoptim 版本

使用 Jpegoptim 進行圖像壓縮

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

無損壓縮單個圖像

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

$ jpegoptim image_name.jpg

例子:

$ jpegoptim sample.jpg

優化 jpeg 圖片

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

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

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

縮小 jpeg 圖像的大小

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

如果您擔心因為 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 命令打印其大小,如下所示:

$杜樣品.jpg

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

$ jpegoptim -n sample.jpg

檢查 jpeg 圖像的潛在空間節省

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

壓縮圖像“有”質量損失

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

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

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

$ jpegoptim -m[percentage_in_numbers] 圖片.jpg

有損壓縮

這是我的原圖:

測試圖片

這就是質量因子為 10% 的情況:

壓縮圖像

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

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

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

$ jpegoptim –size=[size-in-kb] 圖片名稱.jpg

批量優化圖片文件

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

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

$ jpegoptim file1.jpeg file2.jpg file3.jpg

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

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

$ jpegoptim *.jpg

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

$ ls -l

圖像列表

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

優化給定文件夾中的所有文件

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

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

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

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

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

$ cd 文件

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

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

$ nano compressAll.sh

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

#!/bin/sh

# 壓縮當前目錄下的所有*.jpg文件

# 並將它們放在 ./compressed 目錄中

# 與原始文件具有相同的修改日期。

對於我在 *.jpg; 做 jpegoptim -d ./compressed -p “$i”; 完畢

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

這是您的文件的樣子:

使用 jpegoptim 壓縮圖像的腳本

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

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

$ chmod +x compressAll.sh

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

最後,運行腳本如下:

$ /家/[username]/文件/compressAll.sh

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

壓縮腳本在起作用

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

$ ls 壓縮

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

$ man jpegoptim

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