1. 程式人生 > >ubuntu修改圖片格式、去除白邊、矯正影象等使用imagemagick工具

ubuntu修改圖片格式、去除白邊、矯正影象等使用imagemagick工具

可以用 PhotoShop 或 GIMP 這樣的軟體來處理影象。沒人禁止你這麼做,就像沒人禁止你用大炮打蚊子一樣。不過依我看,打蚊子最好還是用電蚊拍,而要處理大量影象的話,我推薦 ImageMagick。


先來介紹一下 ImageMagick。

ImageMagick(簡稱 IM)是一個支援 GPL 協議的開源免費軟體包。
它由一組命令列工具組成的。
它可以對超過 100 種的影象格式(包括 DPX, EXR, GIF, JPEG, JPEG-2000, PDF, PhotoCD, PNG, Postscript, SVG, 和 TIFF等等),進行讀、寫、編輯和轉換的操作。
它支援多數主流作業系統,其中包括 UNIX、Mac OS X 和 Windows。

在ubuntu16.04裡面是自帶的
IM 的主頁是 http://www.imagemagick.org/ 。你可以在那裡下載它的原始碼或可執行檔案。
一般人可以直接下載它的 Windows 發行版。地址是:http://www.imagemagick.org/script/binary-releases.php#windows 。
有 6 種格式可供選擇,如果你不清楚自己要什麼,我建議你下載 Q16 的 static 版。
先來看看 ImageMagick 能做些什麼:

1、批量旋轉、分割,並順序編號
2、自動批量切除白邊(auto-crop)
3、自動傾斜校正(deskew)
4、批量加標註
5、批量去標註
6、批量加水印

7、批量去水印

一、最基本的格式轉換
下面,我將結合與掃書制書有關的影象操作,來說明 IM 的用法。

前面已經說過,IM 由一組命令列工具組成,具體來說也就是 convert、mogrify、composite、montage、identify、compare、display、animate、stream、import 和 conjure,這 11 個命令。

其中最常用的,是 convert 和 mogrify。

1、將 a.gif 轉為 png 格式
    convert a.gif a.png
請注意,convert 命令的基本格式為
    convert 原始檔 [引數] 目標檔案
在上面的命令中,原始檔是 a.gif,目標檔案是 a.png。由於這是最簡單的格式轉換,所以不需要中間的引數。

convert 常用於單個檔案的轉換。上面的命令是它最基本的用法。

前面說過 IM 支援超過 100 種的檔案格式。
下面的命令,可以列出 IM 所支援的所有格式:
    identify -list format

2、批量檔案的格式轉換
    mogrify -path newdir -format png  *.gif
這個命令的作用,是將當前目錄下的所有 gif 檔案,轉換為 png 格式,並將其存放在 newdir 目錄下。

mogrify 是用於批量處理檔案的命令。它的基本格式是這樣的:
    mogrify 引數 原始檔
mogrify 支援基本的萬用字元,例如你可以用 a*.png 指代所有以 a 打頭的 png 檔案,諸如此類。

再回到剛才的命令:
    mogrify -path newdir -format png  *.gif
這裡的 -path 和 -format 是兩個可選擇的引數。
-format 指定輸出的檔案格式,而 -path 則指定輸出的檔案目錄。

我在這裡先強調一下:如果不加 -path 引數的話,mogrify 有可能會覆蓋你的原始檔,因此強烈推薦在每個 mogrify 命令裡都加上 -path 引數,並在執行之前,先檢查整個命令正確性。

二、影象的縮放:使用 -resize
IM 有好幾種縮放影象的方法,在這裡我只講最基本的 resize 命令。

將一個200x304大小的影象縮小為100x152(長寬各縮短一半)。
    convert page200.png -resize 100x152 page100.png
上面的 100x152,指定了目標檔案的長和寬。

你也可以只指定目標檔案寬度,這樣它的高度會等比例放大:
    convert page200.png -resize 100 page100.png
或者只指定高度:
    convert page200.png -resize x152 page100.png
以上三句命令,其結果都是一樣的。

你可以用 identify 命令來顯示影象的尺寸以及其它一些資訊:
    identify page100.png
其結果為:

page100.png PNG 100x152 100x152+0+0 8-bit DirectClass 17.9kb

最後,你還可以通過指定百分比來縮放影象:
    convert page200.png -resize 50% page100.png
    convert page200.png -resize 150% page300.png
批量縮放影象
    mogrify -path newdir -resize 200% *.png
這句命令的意思是將當前目錄中所有的 png 檔案都放大一倍,並存放到 newdir 目錄中。
請注意,如果沒有 -path 語句,新生成的 png 檔案將會覆蓋原始檔案。因此,在使用 mogrify 命令時,-path 引數幾乎是必須的。