ImageMagick是一套功能強大、穩定並且開源的工具集和開發包,能夠用來讀、寫和處理超過89種基本格式的圖片文件。
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
功能與特性:
格式轉換:從一種格式轉換成圖像到另外一個(例如 PNG 轉 JPEG)
變換:縮放,旋轉,裁剪,翻轉或修剪圖像
透明度:使圖像的部分變爲透明
附加:添加形狀或一幀到圖像
裝飾:添加邊框或幀圖像
特效:模糊,銳化,閾值,或色彩圖像動畫:建立一個從GIF動畫圖像組序列
文本及評論:插入描述或藝術圖像中的文字
圖像識別:描述的格式和圖像性能
綜合:重疊了一個又一個的圖像
蒙太奇:並列圖像畫布上的圖像縮略圖
電影支持:讀寫圖像的共同使用的數字電影工做方式
圖像計算器:應用數學表達式的圖像或圖像通道
離散傅立葉變換:實現正向和反向的DFT。
高動態範圍圖像:準確地表現了從最明亮的陽光直射到最深最黑暗的陰影找到真正的幕後普遍的強度水平
加密或解密圖片:轉換成不懂亂碼,而後再返回普通圖像
虛擬像素支持:方便之外區域的圖像像素
大圖像支持:讀,過程,或寫mebi和吉比像素的圖像尺寸
執行:ImageMagick的是線程安全的,利用內部算法OpenMP的功能及快速的雙核和四核處理器技術提供窗口優點
異構分佈式處理:某些算法能夠在跨越的CPU,GPU,以及其餘處理器組成的異構平臺音樂會執行速度提升。
2.下載 與 安裝
1)下載html
可從ImageMagick官方網站下載最新的ImageMagick源碼進行編譯 ,也可直接下載相應的編譯好的二進制包直接安裝。java
官方網址:http://www.imagemagick.org/script/index.phplinux
2)編譯算法
windows下可直接用VC編譯,linux下直接configure make install便可。windows
windows下編譯分爲兩步:安全
a. 首先windows下須要編譯ImageMagick自帶的configure文件, configure是一個ImageMagick提供的配置工具,位於源代碼中的\VisualMagick\configure目錄。configure編譯後會生成configure.exe可執行文件。而後運行configure.exe會出現配置對話框,以下所示:多線程

下一步app

根據須要選擇工程的類型,多線程動態庫,多線程靜態庫等。分佈式
選擇圖像每一個通道的深度。通常狀況下ARGB,每一個通道8用位表示。而ImageMagick默認使用16位表示一個通道。
因爲咱們一般處理的都是8位的圖像,這裏須要調整爲Q8。不然在處理圖像時可能會有問題。
b. configure以後,會在源代碼的根目錄生成vc的工程文件,直接打開build就能夠了。build的結果在源代碼根目錄下的bin目錄。包括兩部分:lib庫和exe程序。便可以經過lib方式在程序中調用,也能夠在命令行中調用。
3)注意
再特別說明一下,必定要注意位深度更改成8,不然編譯出來的程序默認爲每一個顏色16位,在處理圖片時會出錯。
3.使用
ImageMagick功能十分強大,不過也有些複雜。具體能夠參考他的文檔。位於源碼根目錄下的www目錄。也能夠直接點這裏:http://www.imagemagick.org/script/index.php
因爲本人未能詳細研究,下面引用http://www.netingcn.com/category/imagemagick中的內容進行簡要說明:
說明:此文章有網友提供
見官方demo:http://www.imagemagick.org/Usage/thumbnails/#rounded%5Fborder
運行此demo必須條件:
一、ImageMagick 安裝路徑 D:/Program Files/ImageMagick/convert.exe
二、將 ex 文件夾放在 C盤根目錄下。
最終轉換命令
"convert c:/card1.jpg -alpha set -gravity center -extent 1200x750 " +
" c:/a_big.png -compose DstIn -composite " +
" c:/b_big.png -compose Over -composite " +
" c:/111.png "
其中 a_big.png b_big.png 均是背景圖 順序不能互換 111.png 是生成的圓角圖片
思路:
這裏假設用戶上傳的最大長寬比例不超過1200*750,
咱們能夠先作 1200*750 2張背景圖,frist_1200_750.png 和 sec_1200_750.png。
因爲用戶上傳圖片大小不一樣,也就是 width,height不一樣
一、獲得用戶上傳圖片的width、height
二、判斷目錄下是否存在此長寬比的背景圖,若是不存在,再建立此長寬比的背景圖,Radius.java createThumbnail 方法。
三、根據轉換命令,進行轉換。記住,2張背景圖的順序不能反, 讀者可試試互換結果。 Radius.java createRadiusImg 方法。
四、測試,若是 width > height 生成的圓角圖長寬比正常。測試圖片 card1.jpg
若是 width < height,就不正常了。 測試圖片 4d58cae79da70.jpg 若是 width > height, 長寬比均比較大,生成圖片 和 原圖片對比,發現生成圖片模糊,測試圖片 200711108226923_2.jpg
Demo代碼下載地址:http://pan.baidu.com/netdisk/singlepublic?fid=588935_3480700337
圖片反色處理經過convert的negate參數來實現,同時能夠針對制定的區域進行反色。
convert -negate src.jpg negate.jpg
效果圖以下:

convert -region 100x100+0+0 -negate src.jpg negate-part-1.jpg
convert -gravity center -region 100x100+0+0 -negate src.jpg negate-part-2.jpg
注意:regoin參數須要在negate前,不然沒法對指定的區域進行反色處理。另外關於gravity參數詳細信息請參考:ImageMagicK之gravity參數詳解
imagemagick的convert命令經過crop參數,能夠把一幅大圖片分紅若干塊大小同樣的圖片,同時也能夠在大圖上截取一塊圖片來。命令格式爲
convert 原始圖片 -crop widthxheight+x+y 目標圖片
其中widthxheight是目標圖片的尺寸,+x+y是原始圖片的座標點,這兩組值至少要出現一組,也能夠同時存在。另外該命令也可以使用gravity來從新定義座標系統。關於更多gravity的信息,請參考:ImageMagicK之gravity參數詳解。下面介紹幾種經常使用的命令。
convert src.jpg -crop 100x100 dest.jpg
假設src.jpg的大小是300x200,執行命令後將獲得名爲dest-0.jpg、dest-1.jpg...dest-5.jpg
的6張大小爲100x100的小圖片。注意若是尺寸不是目標圖片的整數倍,那麼右邊緣和下邊緣的一部分圖片就用實際尺寸
convert src.jpg -crop 100x80+50+30 dest.jpg
在原始圖片的上距離上部30像素左部50爲起點的位置,分別向左向下截取一塊大小爲100x80的圖片。若是x相對於座標,寬度不夠100,那就取實際值。
convert src.jpg -gravity center -crop 100x80+0+0 dest.jpg
在原始圖上截取中心部分一塊100x80的圖片
convert src.jpg -gravity southeast -crop 100x80+10+5 dest.jpg
在原始圖上截取右下角距離下邊緣10個像素,右邊緣5個像素一塊100x80的圖片
利用ImageMagicK的convert命令,能很方便的實現圖片的放大縮小,能夠進行等比例縮放,也能縮放到指定的固定大小。縮放的參數resize,由它來指定縮放後圖片的寬高,好比「200×100」。
- 等比縮放 例如把圖片a.jpg縮放到200×100的尺寸,能夠用命令:
convert -resize 200×100 src.jpg dest.jpg
注意:雖然明確指定了圖片大小爲200×100,但dest.jpg的不必定就是200×100,由於是等比縮放的,dest.jpg大小取決原始圖片比例。假設src.jpg的大小是500×200,那麼縮放後dest.jpg的真實大小爲200×80,再好比src.jpg的大小是300×200,縮放後的尺寸爲150×100。原則是縮放後的尺寸最少有一個是符合寬或高,且另一個不能大於指定的參數中對應的寬或高。另外能夠經過只指定寬或高的方式來進行縮放。例如:
convert -resize 200 src.jpg dest.jpg
獲得圖片寬爲200,高根據原始圖片比例計算而來
convert -resize x100 src.jpg dest.jpg
獲得的圖片高位100,寬根據原始圖片比例計算而來
- 固定寬高縮放。即不考慮原是圖寬高的比例,把圖片縮放到指定大小。例如命令:
convert -resize 200x100! src.jpg dest.jpg
說明:區別是寬高後面多了一個歎號,此時無論原圖片比例如何,縮放後的圖片大小都是200×100,這樣就可能致使圖片變形。注意:在linux環境對參數須要用單引號引發來,而windows下又不能使用單引號。
- 有條件縮放。能夠經過>或<符號來控制原始圖片是否進行縮放,例如在處理一批尺寸大小各異的圖片,只想把尺寸大於給定的值圖片才進行縮小,若是沒有指定條件,可能會把那些小的圖片進行了放大處理。
convert -resize "200x100>" src.jpg dest.jpg
註解:只有當src.jpg的寬大於200或高大於100時候,才進行縮小處理,
不然生成的dest.jpg和src.jpg具備同樣的尺寸。
注意在linux下要用單引號替換成雙引號,即'200x100>'。
convert -resize "200x100<" src.jpg dest.jpg
註解:只有當src.jpg的寬小於200或高小於100時候,才進行放大處理,
不然生成的dest.jpg和src.jpg具備同樣的尺寸。
注意在linux下要用單引號替換成雙引號,即'200x100<'
上述兩種有條件縮放是按原始圖等比例縮放的,也就是對符合條件的圖片進行等比縮放。同時有條件縮放也能夠與固定大小縮放聯合起來用。例如以下命令。
convert -resize "800x100>!" src.jpg dest.jpg
註解:假設src.jpg尺寸是300x200。很顯然src.jpg的高(200)是大於指定值高(100),
符合縮小的條件,因爲執行的不是等比縮放,
因此dest.jpg的尺寸理論上是800x100,因爲執行是縮小操做
顯然800是超過原始圖片寬的,故dest.jpg的寬只能是300
convert -resize "10x1000<!" src.jpg dest.jpg
註解:假設src.jpg尺寸是300x200,src.jpg的高(200)小於指定值高(1000),
所以該命令將執行放大圖片操做,dest.jpg的高將放到到1000,
因爲目標圖片寬比原始圖片還小,可是執行的是放大操做,所以只能用原始圖片的寬,
因此獲得的dest.jpg的尺寸是300x1000。
如今很流行給本身網站的圖片加上水印,水印多是文字,也多是網站的logo等。圖片水印比較簡單,就是把本身水印圖標合成到原始圖片上;文字水印中若是字符包含中文,處理就稍微麻煩一些。
圖片水印處理
假設把名爲logo.gif的水印圖標添加在原始圖片(src.jpg)右下角,且水印的下邊緣距原始圖片10像素、右邊緣距原始圖片5像素。使用以下命令便可:
convert src.jpg logo.gif -gravity southeast -geometry +5+10 -composite dest.jpg
文字水印處理
若是不含中文字符,能夠直接經過convert draw text的方式將文字添加到圖片,不然就須要使用其它的辦法。命令行中不能包括中文字符,可是能經過讀取文件的方式來操做,即先把中文信息保存文本文件中。注意:文本文件的編碼最好用UTF-8,同時也須要選取一個支持中文的字體。直接把文本文本中的信息輸出到圖片上使用命令mogrify,不過也可使用convert命令把文本文件中的信息生成一個圖片,而後再把圖片合成到原始圖片中。下面分別介紹這幾種方法。
- 不含中文字符:例如把www.netingcn.com做爲水印加上圖片上,命令以下
convert src.jpg -gravity southeast -fill black -pointsize 16 -draw "text 5,5 'http://www.netingcn.com'" dest-c.jpg
mogrify -pointsize 16 -fill black -weight bolder -gravity southeast -annotate +5+5 "http://www.netingcn.com" src.jpg
說明:上述兩條命令達到一樣的結果,可是第一次命令能夠保留原始圖片,第二條是直接在原始圖片上打上水印。
- 存在中文的狀況:假設存有信息的文件叫t.txt,字體文件是msyh.ttf。
方法1:
//把文件t.txt中的信息生成圖片txt.png, -transparent white讓圖片的背景透明,-size x30設置圖片的高度
convert -transparent white -font msyh.ttf -fill black -pointsize 24 label:@t.txt txt.png
//把txt.png合成到src.jpg上
convert src.jpg txt.png -gravity southeast -geometry +10+5 -composite dest.jpg
方法2:
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
方法3:
mogrify -font msyh.ttf -pointsize 24 -fill black -weight bolder -gravity southeast -annotate +20+20 @"t.txt" src.jpg
說明:上述第1、二種方法都有瑕疵,第二種背景不能變成透明,第一種雖然生成的圖片能夠透明,可是合成到原始圖上效果不是很理想,第三種是徹底透明的,因此推動用第三種方式來操做。
使用gravity從新定義座標後,能夠很容易讓子元素與父元素的對齊方式達到想要的效果,讓一切變得很是簡單。好比把一張小圖片疊加到背景圖片的正中位置,按照默認的座標系統,那必需要先知道背景圖片和小圖片的寬度以及高度,而後才能計算出起始點的座標,再經過-geometry來設置座標點。若是使用gravity,把其設置center,即把中心做爲座標的原點,那麼根本不須要計算起始座標點,ImageMagicK會自動把小圖片放置在背景的正中央位置,-geometry默認是+0+0。gravity不只影響父元素的座標系統,並且子元素的重心點(或者叫參照點)也隨之改變。舉例來講,當gravity值爲southeast,父元素的座標原點變爲右下角了,x軸方向是從右到左,y軸方向從下到上;子元素重心點也是右下角,因此geometry設置的座標點就是子元素的右下角相對父元素右下角的位置。gravity會影響經過geometry、annotate、region等來定義座標點。
gravity可用值有九個,分別是:
- NorthWest:左上角爲座標原點,x軸從左到右,y軸從上到下,也是默認值。
convert -size 400×120 xc:gray -size 100×50 xc:blue -gravity northwest -geometry +10+10 -composite -size 100×50 xc:yellow -gravity northwest -geometry +110+60 -composite -gravity northwest -fill red -pointsize 24 -draw 「text 110,60 ‘hello netingcn.com!’」 nw.png
說明:建立一個灰色的400×120的背景,分別把兩個100×50的小圖片放置在背景上的(10,10)和(110,60)的位置,同時經過draw在圖片輸入一段文本,小圖片和文本的參照點是左上角,效果以下圖。

- North:上部中間位置爲座標原點,x軸從左到右,y軸從上到下。
convert -size 400×120 xc:gray -size 100×50 xc:blue -gravity north -geometry +10+10 -composite -size 100×50 xc:yellow -gravity north -geometry +110+60 -composite -fill red -pointsize 24 -gravity north -draw 「text 0,60 ‘hello netingcn.com!’」 n.png
說明:小圖片和文字的參照點是上部中間位置,效果以下圖。

- NorthEast:右上角位置爲座標原點,x軸從右到左,y軸從上到下。 閱讀全文…
convert經過draw能夠在已有的圖片上繪製一些文字、線條、形狀等。可能會用text、line、rectangle、roundRectangle、circle、ellipse等,下面逐一來講明。
- text,把一段文本繪製到已有圖片上。基本命令格式:convert 圖片 -draw 「text x座標,y座標 ‘文本信息’」 ?結果圖片,另外還可有一些參數是能夠設置的,好比字體,字體大小,字體顏色已經從新定義座標原點。
convert -size 512x50 xc:gray -gravity southeast -fill red -pointsize 24 -draw "text 20,5 'hello netingcn.com!'" txt.png
上述命令中使用gravity來從新定義座標,關於gravity的更多信息,請參考ImageMagicK之gravity參數詳解,-fill 設置文字的顏色,顏色可以使用相似#ff00ff的方式,可是須要用雙引號引發來,-pointsize 24設置文字的大小, -draw 後面引號中第一個單詞是text,代表是在圖片上繪製一個設置的文本,20是x座標,5則是y座標,hello netingcn.com!是繪製到圖片上的文本信息,若是文本信息中含有空格,須要用單引號引發來,沒有空格也能夠用單引號,因此建議老是使用單引號。不過遺憾的是不能把中文經過這種方式繪製到圖片,要把中文加在圖片是,須要另外的方法。結果以下圖:

- line,在圖片上繪製一條直線,基本命令格式:convert 圖片 -draw 「line 起點x座標,起點y座標 ?終點x座標,終點y座標」 ?結果圖片,可使用的參數有-stroke 來指定線條的顏色,-strokewidth 指定線的寬度。
convert -size 512x50 xc:gray -stroke white -strokewidth 4 -draw "line 10,25 500,25" line.png

- rectangle、roundRectangle,二者功能都是在圖片上繪製一個矩形,前者是直角,後者能夠繪製圓角。
convert -size 150x150 xc:gray -stroke red -strokewidth 2 -fill white -draw "Rectangle 10,10 140,140" rect-1.png
convert -size 150x150 xc:gray -stroke red -strokewidth 2 -fill white -draw "roundRectangle 10,10 140,140 8,8" rect-2.png
說明:參數-stroke 來指定邊框的顏色,-strokewidth 指邊框的寬度,-fill 矩形的填充顏色,能夠用none設置爲不填充任何顏色,若是沒有-fill參數,默認填充爲黑色,Rectangle 與roundRectangle 後第一組參數是肯定矩形左上角的座標,第二組是肯定右下角的座標,roundRectangle的第三組參數是肯定圓角的幅度,若是是0,0話,就是直角,因此能夠直接用roundRectangle 來代替Rectangle 。示例圖片以下:

- circle、ellipse,分別繪製圓和橢圓。其實也能夠用橢圓來完成圓的繪製。下面用例子說明:
convert -size 140x140 xc:gray -stroke red -strokewidth 2 -fill white -draw "circle 70,70 5,70" circle.png
convert -size 140x140 xc:gray -stroke red -strokewidth 2 -fill white -draw "ellipse 70,70 65,65 0,360" ellipse-1.png
convert -size 140x140 xc:gray -stroke red -strokewidth 2 -fill white -draw "ellipse 70,70 60,30 0,360" ellipse-2.png
convert -size 140x140 xc:gray -stroke red -strokewidth 2 -fill white -draw "ellipse 70,70 60,30 90,270" ellipse-3.png
說明:同矩形同樣,參數-stroke 來指定邊框的顏色,-strokewidth 指邊框的寬度,-fill 矩形的填充顏色,能夠用none設置爲不填充任何顏色。circle和ellipse中的第一組參數都是表明圓心的座標,可是他們第二組參數含義不一樣,circle的第二組參數是圓的任何一邊緣座標,因此圓的半徑就是兩組座標的距離,ellipse的第二組參數中的第一個是橫向的最大長度、第二個是縱向最大高度,第三組參數是繪製的區間,區間是0~360度,0度是原點開始到從左到右,度數是順時針方向。有了這個參數就能夠很容易繪製半圓,1/4圓,乃至圓的任何一部分,因此ellipse比circle的功能更增強大。上述的第二條命令完成和第一條命令一樣的事。示例圖片以下:

gif動畫由一系列圖片按照必定的時間間隔來播放的,每張單獨的圖片做爲gif動畫的一幀。使用ImageMagicK的convert命令很容易獲取gif動畫中的每楨圖片,例如命令?convert exam.gif p.png ,?就會把生產 p-0.png,p-1.png 等一系列圖片。gif動畫的原理就是把一些列動畫合成在一塊兒。因此經過convert很容易作到。例如命令 convert *.jpg ?dest.gif ,?是把當前目錄下的全部 jpg格式的圖片生成一個名爲dest.gif的文件,有兩個參數比較重要,分別是-delay和-loop,其中-delay是控制每楨的切換時間,-loop是控制gif動畫的播放次數,默認是0,0表示無盡的循環播放。
若是想控制每楨的間隔時間不一致,可使用相似?convert -delay 50 0.jpg 1.jpg -delay 100 2.jpg 3.jpg 4.jpg dest.gif 這樣的操做來完成,甚至能夠先製做兩個臨時的gif,而後把臨時的gif合成本身想要的,例如
convert -delay 50 0.jpg 1.jpg t1.gif
convert -delay 100 2.jpg 3.jpg 4.jpg t2.gif
convert t1.gif t2.gif dest.gif
經過上述的素材加一個logo圖片
製做一個以下的gif動畫
?
convert -size 84x200 xc:"#f396eb" bg.gifconvert bg.gif logo.gif -geometry +2+2 -composite bg.gif
convert bg.gif 0.jpg -geometry +2+55 -composite 0.png
convert bg.gif 1.jpg -geometry +2+55 -composite 1.png
convert bg.gif 2.jpg -geometry +2+55 -composite 2.png
convert bg.gif 3.jpg -geometry +2+55 -composite 3.png
convert bg.gif 4.jpg -geometry +2+55 -composite 4.png
convert -delay 50 *.png dest1.gif
說明:思路是先建立一張空白背景圖片,而後把logo合成在背景上,再依次把素材的每張圖片和背景生成一張新圖片做爲gif動畫的一幀,最後使用convert把每楨圖片合成一張gif 。這樣的缺點是生成的gif圖片尺寸會比較大,下面的方法能改進在尺寸上的缺點,可是在gif的循環上又有點不足。
convert -delay 50 *.jpg t.gif
convert -size 84x200 xc:"#f396eb" bg.gif
convert bg.gif logo.gif -geometry +2+2 -composite bg.gif
convert -loop 0 bg.gif -page +2+55 t.gif dest2.gif
ImageMagicK能方便的把多張小圖片合成一張大圖片。合成的方式大體有三種,
- 使用convert命令加 +append或-append參數
- 使用convert命令加 -composite參數
- 直接使用composite命令來完成
其中方式1處理圖片只能左右或上下來拼接圖片,方式2最爲靈活,能夠一次性把多張圖片合成在一塊兒,方式3處理多張圖片時須要一張一張來處理。下面的例子是把google地圖中的4個256×256塊合成一張512×512的大圖,原始圖片以下:
使用方式1
convert +append u0.png u1.png u.png
convert +append d0.png d1.png d.png
convert -append u.png d.png dest.png
說明:其中 +append 橫向把多張圖片拼接在一塊兒,能夠多於2張,圖片按上邊緣對齊,最後一個參數是目標圖片,而-append是縱向拼接圖片,圖片按左邊緣對齊。
使用方式2
convert -size 512x512 -strip -colors 8 -depth 8 xc:none u0.png -geometry +0+0 -composite u1.png -geometry +256+0 -composite d0.png -geometry +0+256 -composite d1.png -geometry +256+256 -composite dest4.png
說明:convert -size 512×512 xc:none 建立一張空白圖片,而後把小圖片合成到其上面。合成的命令大體爲:convert 背景圖片 圖片 定義座標原點 圖片的位置 -composite 目標圖片,其中「圖片 定義座標原點 圖片的位置 -composite」 能夠重複,從而把多張圖片一次性合成到背景圖片上。使用 -gravity 定義座標原點,默認是左上角,能夠用east,north,northwest等來從新定義原點,-geometry相對於原點的位置
使用方式3
convert -size 512x512 -strip -colors 8 -depth 8 xc:none dest1.png
composite -geometry +0+0 u0.png dest1.png dest1.png
composite -geometry +256+0 u1.png dest1.png dest1.png
composite -geometry +0+256 d0.png dest1.png dest1.png
composite -geometry +256+256 d1.png dest1.png dest1.png
說明: composite 定義座標原點 圖片的位置 圖片 背景圖片 目標圖片