一些常用的ImageMagick指令
ImageMagick也有portable免安裝版,在這裡搜尋portable,解壓縮後把圖檔跟程式放在一起,再用命令提示字元執行程式就好。
批次裁切圖片
mogrify -crop 700x500+0+50 -format jpg -path ./cropped *.png
這個指令可以把所有png檔案裁切並且轉成jpg檔,並存在cropped資料夾中(要裁切的圖檔跟mogrify放一起)。這裡700x500是裁切後的大小,+0+50是從左上角的座標點開始。
至於怎麼知道裁切的範圍的座標,這裡分享一個好方法,用小畫家就可以做到。
例如下面這張圖(是我很喜歡的一個樂團),我想要裁切出圖中紅色框框的範圍。我用小畫家打開這張圖後,我把游標移動到紅框框左上角的頂點時,小畫家就會在左下角顯示該點的座標,假設是(500, 150)。類似地,將游標移到紅框框的右下角,得到該點的座標(800, 450)。所以起始點的座標就是紅框框左上角的點,然後圖片大小是800-500=300乘以450-150=300(左右乘以上下),所以指令是-crop 300x300+500+150
。
如果要批次裁切的圖片尺寸不相同,裁切尺寸的部分也可以用百分比,例如我想要裁切每張圖片的上半部,就可以用mogrify -crop 100%x50%+0+0 -format jpg -path ./upper *.bmp
。如果要裁切下半部,因為每張圖片的尺寸不同,所以裁切的起點不固定,所以要改用-chop
指令,也就是把上半部刪掉,例如mogrify -chop 0%x50%+0+0 -format jpg -path ./lower *.tiff
。注意到水平方向的百分比為0,不是100。
批次在圖片中加入字樣
筆者的部落格中,所有圖片中間都有加入部落格的網址字樣,做為類似浮水印的用途,下面討論如何做到這個效果。
在ImageMagick中加入字樣的指令為magick convert -pointsize 20 -draw "gravity center fill grey text 0,0 'Copyright'" "input.jpg" "output.jpg"
。
這個指令是說,在圖片的正中間輸入bfhaha.blogspot.com的字樣,文字大小為20。注意到這個大小是固定的,所以對於解析度較高的圖片,這個字樣會看起來很小。
但因為ImageMagick本身不支援批次編輯圖檔,所以我們在這裡就是利用Microsoft Excel產生所有加入字樣的指令,再利用bat批次檔執行這些指令。
- 先把所有圖檔放在一個資料夾中,包括子資料夾。利用命令提示字元將當前目錄切換到放置圖檔的資料夾,利用指令
dir /a /s /b > allfiles.txt
可以把所有檔案的檔名,輸出到一個文字列表allfiles.txt
,其中參數/s
表示包括所有子資料夾,參數/b
表示僅輸出檔名。注意到資料夾名稱不要有中文,否則等下ImageMagick無法處理。 - 在Excel中,儲存格B1貼上剛剛
allfiles.txt
輸出的列表。 - 在儲存格A1輸入
magick convert -pointsize 20 -draw "gravity center fill grey text 0,0 'bfhaha.blogspot.com'"
。 - 將儲存格A1的內容往下自動完成,要注意Excel有沒有自動把指令中的數字遞增,有的話要用複製的方式避免這個狀況。
- 儲存格C1利用公式
=CONCATENATE(A1, " ", CHAR(34), B1, CHAR(34), " ", CHAR(34), B1, CHAR(34))
產生指令。注意到這個指令中,input.jpg跟output.jpg相同,意思就是加入字樣的檔案會取代掉原檔案,所以建議將原始圖檔另外備份存放。 - 將儲存格C1的公式向下自動完成。
- 將這些指令複製到記事本,另存為
watermark.bat
,跟ImageMagick放在一起即可批次執行這些指令。
No comments:
Post a Comment