歡迎共同研究ImageMagick
Email:sxw2k@sina.com
sxw
2011年暑假
ImageMagick學習筆記
注意:ImageMagick對中文支持不好窒悔,文件(夾)一定不要含中文粒氧,否則會報錯喳篇!切記敞临!
-開啟開關 +關閉開關,恢復從前麸澜。
convert
convert顧名思義就是對圖像進行轉(zhuǎn)化挺尿,它主要用來對圖像進行格式的轉(zhuǎn)化,同時還可以做縮放炊邦、剪切编矾、模糊、反轉(zhuǎn)等操作馁害。
格式轉(zhuǎn)化
比如把 foo.jpg 轉(zhuǎn)化為 foo.png:轉(zhuǎn)換不會破壞原圖像窄俏。
convert foo.jpg foo.png
Mogrify
mogrify -format png *.jpg
將所有jpg文件轉(zhuǎn)換成png格式,不破壞源文件(相當于批量轉(zhuǎn)換了)
注意:
mogrify -format png *.gif
會把gif文件的每一幀都轉(zhuǎn)化成png文件碘菜,會生成很多文件
convert還可以把多張照片轉(zhuǎn)化成pdf格式:
convert *.jpg foo.pdf
convert test.gif test.jpg 會生成很多以test開頭的圖片文件
=>大小縮放
為一個普通大小的圖片做一個縮略圖
convert -resize 100x100 foo.jpg thumbnail.jpg
也可以用百分比,更為直觀:
convert -resize 50%x50% foo.jpg thumbnail.jpg (50%x50%是字母x)
convert會自動地考慮在縮放圖像大小時圖像的高寬的比例凹蜈,也就是說新的圖像的高寬比與原圖相同。
批量生成縮略圖:
mogrify -sample 80x60 *.jpg
注意炉媒,這個命令會覆蓋原來的圖片踪区,不過你可以在操作前,先把你的圖片備份一下吊骤。
convert -sample 25%x25% input.jpg output.jpg
等比列縮放
=>加邊框
在一張照片的四周加上邊框缎岗,可以用 -mattecolor 參數(shù),
convert -mattecolor "#000000" -frame 60x60 yourname.jpg rememberyou.png
其中白粉,"#000000"是邊框的顏色传泊,邊框的大小為60x60
=>在圖片上加文字
convert -fill green -pointsize 40 -draw "text 10,50 charry.org" 2.jpg 222.jpg
上面的命令在距離圖片的左上角10x50的位置鼠渺,用綠色的字寫下charry.org,如果你要指定別的字體眷细,可以用-font參數(shù)拦盹。
或者:
convert 1.png -fill white -pointsize 13 -draw "text 10,15 ‘lifesinger 2006’" 2.png
=>模糊
高斯模糊:
convert -blur 80 foo.jpg blur.png
-blur參數(shù)還可以這樣-blur 80x5。后面的那個5表示的是Sigma的值溪椎,這個是圖像術語普舆,我也不太清楚,總之校读,它的值對模糊的效果起關鍵的作用沼侣,效果更明顯
=>翻轉(zhuǎn)
上下翻轉(zhuǎn):
convert -flip foo.png bar.png
左右翻轉(zhuǎn):
convert -flop foo.png bar.png
=>反色
形成底片的樣子:
convert -negate foo.png bar.png
單色
把圖片變?yōu)楹诎最伾?/p>
convert -monochrome foo.png bar.png
加噪聲
convert -noise 3 foo.png bar.png
油畫效果
我們可用這個功能,把一張普通的圖片歉秫,變成一張油畫蛾洛,效果非常的逼真
convert -paint 4 foo.png bar.png
著色:
著色是將每個像素的顏色與指定顏色混合的過程。該效果的參數(shù)就是要用來混合的顏色雁芙≡欤可以用一個百分數(shù)(它將分別用于紅色、綠色和藍色)兔甘,也可以用三個百分數(shù)來指定這個參數(shù)谎碍。也可以提供三個實際值中的一個。要指定三個值裂明,每個值分別代表紅色椿浓、綠色和藍色三個采樣,使用 red/green/blue 形式的參數(shù)闽晦。例如扳碍, 10/20/30 意味著紅色的值是 10、綠色值為 20 而藍色值為 30仙蛉。您也可以在這個構(gòu)造中使用百分數(shù)
convert -colorize 255 input.jpg output.jpg
convert -colorize 100/0/125 input.jpg output.jpg
內(nèi)爆效果
內(nèi)爆效果模擬了您圖像的中心被吸入虛擬黑洞的情形笋敞。所用的參數(shù)是您所期望的內(nèi)爆效果量。
convert -implode 1 input.jpg output.jpg
曝光荠瘪,模擬膠片曝光
convert -solarize 42 input.jpg output.jpg
擴散
spread 在圖像之內(nèi)以隨機的數(shù)量移動像素夯巷。所用的參數(shù)是被移到新選擇的位置的像素區(qū)域的大小。所以它指定了輸出和輸入的相似程度
convert -spread 5 input.jpg output.jpg
馬賽克效果:convert -sample 10% -sample 1000% input.jpg output.jpg
從左至右將圖片水平相連:
convert +append *.jpg result.jpg
或
convert -size 350x500 xc:black composite.jpg
composite -geometry +0+0 composite.jpg image1.gif composite.jpg
composite -geometry +100+0 composite.jpg image2.gif composite.jpg
composite -geometry +0+300 composite.jpg image3.gif composite.jpg
composite -geometry +0+375 composite.jpg image4.gif composite.jpg
旋轉(zhuǎn)
把一張圖片哀墓,旋轉(zhuǎn)一定的角度:
convert -rotate 30 foo.png bar.png
上面的30趁餐,表示向右旋轉(zhuǎn)30度,如果要向左旋轉(zhuǎn)篮绰,度數(shù)就是負數(shù)后雷。
炭筆效果:
convert -charcoal 2 foo.png bar.png
形成炭筆或者說是鉛筆畫的效果。增加 -charcoal 選項的參數(shù)的數(shù)值會增加應用于該圖像的“炭筆”數(shù)量,但也會延緩生成圖像的過程臀突。
散射
毛玻璃效果:
convert -spread 30 foo.png bar.png
漩渦
以圖片的中心作為參照勉抓,把圖片扭轉(zhuǎn),形成漩渦的效果:
convert -swirl 67 foo.png bar.png
凸起效果
用-raise來創(chuàng)建凸邊:
convert -raise 5x5 foo.png bar.png
執(zhí)行后候学,你會看到藕筋,照片的四周會一個5x5的邊,如果你要一個凹下去的邊梳码,把-raise改為+raise就可以了隐圾。其實凸邊和凹邊看起來區(qū)別并不是很大。
為圖片添加一些注釋信息:
convert -font Arial -stroke green -fill red -draw "text 50,60 www.hist.edu.cn" -pointsize 14 07.jpg hist.png
解釋:
-draw “text 10,10 String" 在以圖片左上角為原點坐標的10,10位置處添加文字
-font 指定字體
-stroke 描邊用的顏色边翁,
-fill 填充用的顏色翎承,這里用none就可以畫出空心字了,
-pointsize 字體像素大小符匾,
-font Arial 將注釋的字體設置為Arial。也可以在此處指定字體文件的路徑瘩例。但它是使用位于非標準位置的字體來完成該任務的:
convert -font c:\windows\fonts\1900805.ttf -fill white -pointsize 36 -draw ‘text 10,475 “ylmf.com”’ floriade.jpg stillhq.jpg
-fill white 用白色而不是標準的黑色來填充字母啊胶。
-pointsize 36 以點為單位指定字母的大小。一英寸等于 72 點垛贤。
convert -font fonts\1900805.ttf -fill white -pointsize 36 -draw 'text 10,475 "stillhq.com"' floriade.jpg stillhq.jpg
以下是結(jié)果:
帶標記的圖像
-fill white 用白色而不是標準的黑色來填充字母焰坪。
發(fā)散后應用炭筆效果:
convert -sample 50%x50% -spread 4 -charcoal 4 input.jpg output.jpg
加上5個像素寬的紅色邊框:
convert -bordercolor red -border 5x5 input.jpg output.jpg
convert -list color 列出描邊可用的顏色
還可以使用以下方法來指定您自己的顏色了,這里 R 表示紅色值聘惦,G 表示綠色值某饰,B 表示藍色值,A 是 alpha(透明度)值:
#RGB - (R,G,B 是十六進制數(shù)善绎,每個 4 位)
#RRGGBB - (每個 8 位)
#RRRGGGBBB - (每個 12 位)
#RRRRGGGGBBBB - (每個 16 位)
#RGBA - (每個 4 位)
#RRGGBBAA - (每個 8 位)
#RRRGGGBBBAAA - (每個 12 位)
#RRRRGGGGBBBBAAAA - (每個 16 位)
rgb(r,g,b) - (r,g,b 是十進制數(shù))
rgba(r,g,b,a) - (r,g,b,a 是十進制數(shù))
convert -mattecolor rgba(255,91,191,1) -frame 2x2 input.jpg out.jpg
添加一些類似于用 -raise 命令得到的陰影
convert -mattecolor rgb(255,181,197) -frame 5x5+2 input.jpg out.jpg
更多的修飾:
convert -mattecolor rgb(255,181,197) -frame 5x5+2+2 input.jpg out.jpg
convert -mattecolor rgb(255,181,197) -frame 25x25+0+25 input.jpg out.jpg
convert -mattecolor rgb(255,181,197) -frame 25x25+25+0 input.jpg out.jpg
研究邊框可深入研究下-frame參數(shù)
composite 命令將一個圖像疊加到另一個圖像上
composite -gravity NorthEast w.jpg input.jpg out.jpg
composite -gravity NorthWest w.jpg input.jpg Northwest.jpg
composite -gravity SouthWest w.jpg input.jpg southwest.jpg
composite -gravity SouthEast w.jpg input.jpg southEast.jpg
可以疊加一個透明的角黔漂,生成帶有圓角的圖像。
將圖片轉(zhuǎn)換成pdf文件
convert *.jpg test.pdf
而 convert test.pdf test.png
是將pdf中的文件導出禀酱!但是需要 Ghostscript
生成法國國旗圖案
convert -size 20x40 xc:red xc:white xc:blue +append flag.png
命令的執(zhí)行是有順序的炬守,按照從左至右的順序依次執(zhí)行
convert 1.jpg -crop 300x300+0+0 -resize 200x200 -colors 100 +profile "*" 1.png
表示:把1.jpg先從左上角(0,0)裁剪一塊300x300的部分,然后把這部分縮小到200x200剂跟,然后把顏色縮減到100色减途,最后生成1.png。"+profile "*""意味著在圖片文件里不存儲附加信息曹洽,以減小圖片體積鳍置。
注意,-resize會試圖保留原圖的視覺比例送淆,因此不一定生成的圖片和你指定的尺寸一定匹配税产,比如,如果2.jpg大小是400x200,那么如果用下面的命令:
convert 2.jpg -resize 100x100 2.png
那么生成的圖片2.png的實際大小是100x50砖第。
常用的命令有:
-crop 寬x高+起點橫坐標+起點縱坐標:裁剪圖
-resize 寬x高[!]:改變尺寸撤卢,如果使用驚嘆號,表示不保留視覺比例梧兼,強行改變尺寸匹配給定的寬和高
-colors 顏色數(shù):設定圖片采用的顏色數(shù)放吩,如果是生成png或gif圖片應指定這個參數(shù)
-quality 質(zhì)量:設定jpeg圖片輸出質(zhì)量,推薦采用80羽杰,此命令僅用于輸出格式是jpg的情況渡紫,不應省略,省略的話默認質(zhì)量是95考赛,生成圖片過大
+profile "*":圖片中不存儲附加信息惕澎,必須使用,否則生成圖片過大
生成索引:
montage -bordercolor red -borderwidth 3 -label "%f" -tile 5x3 *.jpg montage.jpg
mogrify -format gif *.jpg
將所有jpg文件轉(zhuǎn)換成gif格式
identify -verbose 001.jpg
顯示圖片詳細信息
identify -format "%wx%h" 001.jpg
顯示圖片的寬和高輸出類似于640x480颜骤,其中-format允許你僅僅定想要輸出的信息唧喉。%w 表示圖像寬度,而 %h 表示圖像高度
圖片目錄(visual image directory 忍抽,VID)的創(chuàng)建:
montage *.jpg directory.vid
或則
convert 'vid:*.jpg' directory.vid
如何將gif文件分析為一系列的單個圖片八孝?
convert animation.gif framed.gif
如何從圖片文件中抽取第一張圖片
convert "Image.gif[0]" first.gif
如何創(chuàng)建一張空白圖片
convert -size 80x60 xc:"#ddddff" ss.jpg
convert -size 80x60 null:white white.jpg
convert 017.jpg -threshold 100% black.jpg 創(chuàng)建一張與017.jpg同大小的圖片,黑色
convert 017.jpg -threshold 65% black.jpg
identify -format "%wx%h" sample.png
顯示圖片寬和高
convert +adjoin *.jpg frames%d.gif 所有jpg圖片轉(zhuǎn)換成gif格式
如何生成gif動畫
1鸠项、convert -delay 20 *.jpg animation.gif
2干跛、convert -delay 20 001.jpg -delay 10 006.jpg -delay 5 007.jpg animation.gif
3、convert 010.jpg -page +50+100 007.jpg -page +0+100 008.jpg animation.gif
4祟绊、convert -loop 50 *.jpg animation.gif
Imagick的兩種命令行格式:
command [options] input_image output_image
command [options] image1 [options] image2 [options] output_image
convert -size 40x20 xc:red xc:blue -append -rotate 90 append_rotate.gif
產(chǎn)生一藍一紅2個圖片楼入,附加到一塊然后再右旋轉(zhuǎn)90度
convert -size 40x20 xc:red xc:blue -rotate 90 -append append_rotate.gif
convert -size 40x20 xc:red xc:blue -append append_rotate.gif
convert -size 40x20 xc:red xc:blue -rotate 90 append_rotate.gif
注意這是一個動畫,有2副圖片牧抽。會動的<涡堋!
convert 06.jpg 07.jpg -append 08.jpg 09.jpg -background skyblue +append temp.jpg
06.jpg和07.jpg垂直附加阎姥,08.jpg和09.jpg水平附加在背景為天藍色的圖片上
convert -list gravity
- None
- Center
- East
- Forget
- NorthEast
- North
- NorthWest
- SouthEast
identify -ping 000.jpg
# 000.jpg JPEG 670x448 670x448+0+0 DirectClass 8-bit 46.2891kb
identify -format "%k" 000.jpg
# 34426
identify -ping -format "double_width=%[fx:w*2] PI=%[fx:atan(1)*4]" 000.jpg
# double_width=1340 PI=3.14159
convert null: -print "(50 + 25)/5 ==> %[fx: (50+25)/5 ]\n" null:
# (50 + 25)/5 ==> 15