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