首頁 > 軟體

ImageMagick命令列使用教學範例詳解

2020-06-16 16:39:04

ImageMagick (TM) 是一個免費的建立、編輯、合成圖片的軟體。它可以讀取、轉換、寫入多種格式的圖片。圖片切割、顏色替換、各種效果的應用,圖片的旋轉、組合,文字,直線,多邊形,橢圓,曲線,附加到圖片伸展旋轉。

ImageMagick是免費軟體:全部原始碼開放,可以自由使用,複製,修改,發布。它遵守GPL許可協定。它可以執行於大多數的作業系統。ImageMagick的大多數功能的使用都來源於命令列工具。通常來說,它可以支援以下程式語言: Perl, C, C++, Python, PHP, Ruby, Java;現成的ImageMagick介面(PerlMagick, Magick++, PythonMagick, MagickWand for PHP, RubyMagick, and JMagick)是可利用的。這使得自動的動態的修改建立圖片變為可能。

ImageMagick支援至少90種圖片格式: A, ART, AVI, AVS, B, BIE, BMP, BMP2, BMP3, C, CACHE, CAPTION, CIN, CIP, CLIP, CLIPBOARD, CMYK, CMYKA, CUR, CUT, DCM, DCX, DNG, DOT, DPS, DPX, EMF, EPDF, EPI, EPS, EPS2, EPS3, EPSF, EPSI, EPT, EPT2, EPT3, FAX, FITS, FPX, FRACTAL, G, G3, GIF, GIF87, GRADIENT, GRAY, HDF, HISTOGRAM, HTM, HTML, ICB, ICO, ICON, JBG, JBIG, JNG, JP2, JPC, JPEG, JPG, JPX, K, LABEL, M, M2V, MAP, MAT, MATTE, MIFF, MNG, MONO, MPC, MPEG, MPG, MSL, MTV, MVG, NULL, O, OTB, P7, PAL, PALM, PATTERN, PBM, PCD, PCDS, PCL, PCT, PCX, PDB, PDF, PFA, PFB, PGM, PGX, PICON, PICT, PIX, PJPEG, PLASMA, PNG, PNG24, PNG32, PNG8, PNM, PPM, PREVIEW, PS, PS2, PS3, PSD, PTIF, PWP, R, RAS, RGB, RGBA, RGBO, RLA, RLE, SCR, SCT, SFW, SGI, SHTML, STEGANO, SUN, SVG, SVGZ, TEXT, TGA, TIF, TIFF, TILE, TIM, TTC, TTF, TXT, UIL, UYVY, VDA, VICAR, VID, VIFF, VST, WBMP, WMF, WMFWIN32, WMZ, WPG, X, XBM, XC, XCF, XPM, XV, XWD, Y, YCbCr, YCbCrA, YUV

ImageMagick 包括一組命令列工具來操作圖片。你大部份習慣每次編輯圖片都提供圖形使用者介面 (GUI) 編輯影象就像GIMP和PhotoShop一樣。然而,一個圖形使用者介面不總是方便的。假如你想要從一個網頁動態地處理一個影象,或者你在不同時間生成一樣的或不同的影象,想要對許多影象或重複特定應用相同的操作。對於操作的這些型別,處理公用程式命令列工具是一個好的選擇。

在下面的段落中,可以找到命令列工具的簡單短描述。點選程式名稱可以得到關於這個程式的具體用法。如果你想得到更多的關於ImageMagick,請仔細閱讀以下命令列工具的使用方法:

convert

轉換影象格式和大小,模糊,裁剪,驅除汙點,抖動,臨近,圖片上畫圖片,加入新圖片,生成縮圖等。

identify

描述一個或較多影象檔案的格式和特性。

mogrify

按規定尺寸製作一個影象,模糊,裁剪,抖動等。Mogrify改寫最初的影象檔案然後寫到一個不同的影象檔案。

composite

根據一個圖片或多個圖片組合生成圖片。

montage

建立一些分開的要素影象。在含有要素影象任意的裝飾圖片,如邊框、結構、圖片名稱等。

compare

在算術上和視覺上評估不同的圖片及其它的改造圖片。

display

如果你擁有一個X server的系統,它可以按次序的顯示圖片

animate

利用X server顯示動畫圖片

import

在X server或任何可見的視窗上輸出圖片檔案。 你可以捕獲單一視窗,整個的熒屏或任何熒屏的矩形部分。

conjure

解釋執行 MSL (Magick Scripting Language) 寫的指令碼。

最為重要的是,ImageMagick的大多數功能的使用都來源於命令列工具。

範例一:綜合操作(ImageMagick命令列)

1.convert -crop 300x300+0+0 -resize 200x200 -colors 100 +profile "*" linuxidc.com.jpg linuxidc.jpg

處理過程解釋:

1、把當前目錄linuxidc.com.jpg圖片檔案,從左上角(0,0)坐標為起點,裁剪一塊300x300畫素的部分。

2、然後把這部分縮小到200x200畫素。

3、然後把顏色縮減到100色。
 4、+profile "*"  , 意味著在圖片檔案裡不儲存Exif資訊,以減小圖片體積。

5、最後生成linuxidc.jpg,儲存在當前目錄。

注意:-resize會試圖保留原圖的原始長寬比例,因此不一定生成的圖片和你指定的尺寸一定匹配,比如,如果linuxidc.com.jpg大小是400x200,所以如果用命令:convert linuxidc.com.jpg -resize 100x100 linuxidc.jpg,那麼生成的圖片linuxidc.jpg的實際大小是100x50。

常用的引數用途說明:
 -crop 寬x高+起點橫坐標+起點縱坐標:裁剪圖
 -resize 寬x高!:改變尺寸,如果使用驚嘆號,表示不保留視覺比例,強行改變尺寸匹配給定的寬和高;如果僅給定寬或者高,如“寬x”或“x高”形式的引數(“x高”與“寬x高”的效果是一樣的),則以已知引數為基準按比例改變尺寸。
 -colors 顏色數:設定圖片採用的顏色數,如果是生成png或gif圖片應指定這個引數
 -quality 品質:設定jpeg圖片輸出品質,推薦採用80,此命令僅用於輸出格式是jpg的情況,不應省略,省略的話預設品質是95,生成圖片過大
 +profile "*":圖片中不儲存Exif資訊,必須使用,否則生成圖片過大

範例二:生成縮圖(縮小圖片)

1.convert -sample 80x40 input.jpg output.jpg  (使用一個簡單的演算法生成縮圖,速度快,畫質較低,適合生成100x100以下的圖片) 
2.convert -resize 100x100 foo.jpg thumbnail.jpg (畫質好) 
3.convert -resize 50%x50% foo.jpg thumbnail.jpg 
4.convert -resize 100x200 22.jpg(圖片路徑)  11.jpg(縮放後存放路徑)  圖片按比例縮放 
5.convert -resize 100x200! 22.jpg(圖片路徑)  11.jpg(縮放後存放路徑)  強制按給定的寬高縮放 
 
範例三:裁剪圖片

1.convert -crop  100(長)x200(高)+10(x坐標)+10(y坐標)  linuxidc.jpg(源圖片路徑)  linuxidc.com.jpg(縮放後存放路徑)   

範例四:旋轉影象

1.convert -rotate 90 input.jpg output.jpg 
 
範例五:獲取檔案資訊

1.libtiff tiffinfo filename.tiff 
 
範例六:把圖片變為黑白顏色

1.convert -monochrome linuxidc.com.gif linuxidc.gif

原圖如下:

轉換後如下:

新增圖片水印處理

假設把名為logo.gif的水印圖示新增在原始圖片(src.jpg)右下角,且水印的下邊緣距原始圖片10畫素、右邊緣距原始圖片5畫素。使用如下命令即可:

1.convert src.jpg logo.gif -gravity southeast -geometry +5+10 -composite dest.jpg 

新增英文文字水印

convert  -fill white -pointsize 24 -draw "text 10,15 'lifesinger 2006' "  1.png  2.png

文字坐標在:10x50的位置
可以用-font指定字型,這時需要安裝Ghostscript支援。

如果安裝IM、GM時,沒有安裝Ghostscript字型,會預設使用Linux系統的字型,目錄是:/usr/share/fonts/default/Type1/

新增中文文字水印

高版本的ImageMagick的方法

convert -font C:ImageMagickfontfangzheng.ttf  -fill green -pointsize 40 -draw "text 10,50 '文字'" d:bagImg21.jpg d:bagImg22.jpg

引數說明: -font C:ImageMagickfontfangzheng.ttf    是指明Windows字型檔案。

要高版本的ImageMagick同,在加中文文字水印時才不亂碼。

低版本的ImageMagick的方法

存在中文的情況:假設存有資訊的檔案叫t.txt,字型檔案是msyh.ttf。

1.方法1: 
2.//把檔案t.txt中的資訊生成圖片txt.png, -transparent white讓圖片的背景透明,-size x30設定圖片的高度 
3.convert -transparent white -font msyh.ttf -fill black -pointsize 24 label:@t.txt txt.png 
4.//把txt.png合成到src.jpg上 
5.convert src.jpg txt.png -gravity southeast -geometry +10+5 -composite dest.jpg 
6. 
7.方法2: 
8.convert src.jpg -transparent white -font msyh.ttf -fill black -pointsize 24 -size x30 label:@t.txt -gravity southeast -geometry +10+5 -composite dest.jpg 
9. 
10.方法3: 
11.mogrify -font msyh.ttf -pointsize 24 -fill black -weight bolder -gravity southeast -annotate +20+20 @"t.txt" src.jpg 
說明:上述第一、二種方法都有瑕疵,第二種背景不能變成透明,第一種雖然生成的圖片可以透明,但是合成到原始圖上效果不是很理想,第三種是完全透明的,所以推進用第三種方式來操作。

如何在Debian和Ubuntu上安裝ImageMagick 7  https://www.linuxidc.com/Linux/2019-02/157008.htm


IT145.com E-mail:sddin#qq.com