2021/05/09

Mac OS上用ImageMagick指令去批次壓縮圖像檔案大小和修改圖像檔案尺寸

電腦中有一堆圖像檔,想要壓縮成較細的檔案才上存到某處、或者傳送給別人,但手頭上又沒有要課金可以執行批次工作的Adobe Photoshop的話,可以怎辦?

用Mac上的Automator,再一步一步經去「錄影」,然後播放?不是不可以,只是太太太麻煩了,如果要批次處理的只有十個、二十個的話,花的時間和一個一個手動在Preview上匯出沒有太大分別。

在Mac OS上,其實是可以安裝只在命令列上執行的程式ImageMagick去批次處理!

首先需要在Mac OS上安裝ImageMagick。

打開Terminal。

輸入下面的指令安裝ImageMagick:

brew install imagemagick

正常安裝的話,可以跳過這個步驟。如果出現錯誤的話,那就代表你的Mac上還未有套件管理程式Homebrew,所以請先安裝Homebrew:

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

安裝第一次ImageMagick可能會快上一些時間,因為ImageMagick本身的功能是很強的,我們這次只是用上一個小小的檔案壓縮功能。

在安裝完成後,就可以用上ImageMagick。

假設我們這次是要把100個2MB至5MB大小不等的JPEG圖檔壓成300kb大小。

那最快的方法是──

在桌面開一個叫「img」的資料夾,然後把那100個圖檔全都複製進去。切記,是複製!Copy!不是移動/Move,因為ImageMagick處理完成後是不會留下副本的。

確定無誤後,在Terminal輸入下面命令:

cd ~/Desktop/img/ && mogrify -define jpeg:extent=300kb *.jpg

簡單解說:

cd ~/Desktop/img/ && ,是要Terminal去處理桌面裡名叫「img」的資料夾。

mogrify ,ImageMagick是執乎命令。

-define jpeg:extent=300kb 就是要把輸出的JPEG圖檔都以300kb為目標大小,那是目標,結果可能會比300kb大或小的,因為尺寸不變,只在壓縮比例上盡力。不過如果原圖是少於300kb的話,也會被灌水變成300kb。300kb這數字可以按需修改。

*.jpg 就是指「img」的資料夾裡面的所有jpg圖檔(尾綴副檔名是要小楷的,大楷的請用*.JPG)。

這樣就會在尺寸不變的情況下把資料夾裡面的所有jpg檔壓縮成300kb左右大小。不過在尺寸不變的情況下,壓縮太強的話,可能失真會很嚴重。

尺寸不變的話,強行壓縮的話,失真就有點誇張…

我們也可以用ImageMagick來修改圖像檔案尺寸(resize),這次,我們假設要按比例把寬度縮減成640 pixels。

-resize 640 ,就是按比例把圖像的寬縮小到640 pixel。

cd ~/Desktop/img/ && mogrify -define jpeg -resize 640 *.jpg

兩個命令沒有相抵觸的話,可以一拼使用──

cd ~/Desktop/img/ && mogrify -define jpeg:extent=300kb -resize 640 *.jpg

這樣用的話,就可以在640 pixel寬話,縮小成300kb大小的話,應該可以保持一定的畫質。

縮小成640 x 480的話,就比較合理,不過也很視乎應用啦。

原文[stackoverflow.com]

其實ImageMagick不限於Mac OS,在Linux上也可以用。