ImageMagick是一個免費(fèi)的創(chuàng)建、編輯、合成圖片的軟件。它可以讀取、轉(zhuǎn)換、寫入多種格式的圖片。圖片切割、顏色替換、各種效果的應(yīng)用,圖片的旋轉(zhuǎn)、組合,文本,直線,多邊形,橢圓,曲線,附加到圖片伸展旋轉(zhuǎn)。其全部源碼開放,可以自由使用,復(fù)制,修改,發(fā)布。它遵守GPL許可協(xié)議。它可以運(yùn)行于大多數(shù)的操作系統(tǒng)。 最為重要的是,ImageMagick的大多數(shù)功能的使用都來源于命令行工具。
ImageMagick還有一個小工具identify,它可以用來顯示一個圖片文件的詳悉信息,比如格式、分辨率、大小、色深等等,你都可用它來幫你的忙。
convert 轉(zhuǎn)換圖像格式和大小,模糊,裁剪,驅(qū)除污點(diǎn),抖動,臨近,圖片上畫圖片,加入新圖片,生成縮略圖等。
identify 描述一個或較多圖像文件的格式和特性。
composite 根據(jù)一個圖片或多個圖片組合生成圖片
舉個例子
convert +profile '*' [src]{file}.{ext} -quality 80 -resize '280x140^>' -gravity Center -crop 280x140+0+0 +repage [out]{file}_280x140.{ext}
把一張圖片按80的質(zhì)量去壓縮(jpg的壓縮參數(shù)),同時按圖片比例非強(qiáng)制縮放成不超過280x140的圖片.居中裁剪280x140,去掉圖片裁減后的空白和圖片exif信息,通常這種指令是為了保證圖片大小正好為280x140
下面對各個指令的含義簡要說明
-quality 圖片質(zhì)量,jpg默認(rèn)99,png默認(rèn)75
-resize
100x100 高度和寬度比例保留最高值,高比不變
100x100^ 高度和寬度比例保留最低值,寬高比不變
100x100! 寬度和高度強(qiáng)制轉(zhuǎn)換,忽視寬高比
100x100> 更改長寬,當(dāng)圖片長或?qū)挸^規(guī)定的尺寸
100x100< 更改長寬 只有當(dāng)圖片長寬都超過規(guī)定的尺寸
100x100^> 更改長寬,當(dāng)圖片長或?qū)挸^規(guī)定的尺寸。高度和寬度比例保留最低值
100x100^< 更改長寬,只有當(dāng)圖片長寬都超過規(guī)定的尺寸。高度和寬度比例保留最低值
100 按指定的寬度縮放,保持寬高比例
x100 按指定高度縮放,保持寬高比
-gravity NorthWest, North, NorthEast, West, Center, East, SouthWest, South, SouthEast截取用的定位指令,定位截取區(qū)域在圖片中的方位
-crop 200x200+0+0 截取用的截取指令 ,在用定位指令后,按后兩位的偏移值偏移截取范圍左上角的像素后,再按前兩位的數(shù)值,從左上角開始截取相應(yīng)大小的圖片
+repage 去掉圖片裁減后的空白
-dissolve 30 設(shè)定組合圖片透明度dissolve示例
+/-profile * 去掉/添加圖片exif信息
下面記錄下一些比較復(fù)雜一點(diǎn)的指令:
convert +profile '*' [src]{file}.{ext} -quality 90 -resize '700>' /data/tony/watermark_1.png -gravity southeast -compose Dissolve -composite [out]{file}_1024x1024.{ext}
convert +profile '*' [src]{file}.{ext} /data/watermark_1.png -gravity southeast -geometry +10+10 -composite [src]{file}.{ext}
convert +profile '*' [src]{file}.{ext} -coalesce -resize '950x135>' [out]{file}_950x135.{ext}
convert +profile '*' [src]{file}.{ext} -resize '650x500>' miff:- | composite +profile '*' -dissolve 30 -gravity southeast /data/tony/watermark_1.png - [out]{file}_650x500.{ext}
convert [src]{file}.{ext} -quality 80 -resize '190>' -background white -gravity center -extent 190x +repage [out]{file}_width190.{ext}
【/bin/sh^M: bad interpreter: 沒有那個文件或目錄】
vim filename
然后用命令
:set ff? #可以看到dos或unix的字樣. 如果的確是dos格式的。
然后用
:set ff=unix #把它強(qiáng)制為unix格式的, 然后存盤退出。
convert功能強(qiáng)大,用來批處理圖片的放大、縮小、裁剪、旋轉(zhuǎn)、合并、水印、拼接、格式轉(zhuǎn)換等都非常方便,特別適合后臺的圖片處理。
1,獲取圖片信息
$identify image.png image.png PNG 559x559 559x559+0+0 8-bit sRGB 467KB 0.000u 0:00.008
如果只需要獲取寬高:
$identify -format "%wx%h" image.png
2,放大,縮小 -resize
$convert image.png -resize 200x200 resize.png
>
也可以按照比例(縮小一半):
$convert image.png -resize 50% resize.png
還可以多次縮放(先縮小一半,再放大一倍,效果就是變模糊了):
$convert image.png -resize 50% -resize 200% resize.png
3,放大,縮小 -sample
與resize的區(qū)別在于-sample只進(jìn)行了采樣,沒有進(jìn)行插值,所以用來生成縮略圖最合適
$convert image.png -sample 50% sample.png
這個處理的效果就是馬賽克:
$convert image.png -sample 10% -sample 1000% sample.png
4,裁剪 -crop
從(50,50)位置開始,裁剪一個100X100大小的圖片:
$convert image.png -crop 100x100+50+50 crop.png
如果不指定位置,則按照這個大小分隔出小圖片,這個命令生成crop-0.png,crop-1.png,crop-2.png……:
$convert image.png -crop 100x100 crop.png
可以指定裁剪位置的相對位置 -gravity:
$convert image.png -gravity northeast -crop 100x100+0+0 crop.png
-gravity即指定坐標(biāo)原點(diǎn),有northwest:左上角,north:上邊中間,northeast:右上角,east:右邊中間……
5,旋轉(zhuǎn) -rotate
$convert image.png -rotate 45 rotate.png
默認(rèn)的背景為白色,我們可以指定背景色:
$convert image.png -backround black -rotate 45 rotate.png $convert image.png -background #000000 -rotate 45 rotate.png
還可以指定為透明背景色:
$convert image.png -background rgba(0,0,0,0) -rotate 45 rotate.png
6,合并
合并指的是將一張圖片覆蓋到一個背景圖片上:
$convert image.png -compose over overlay.png -composite newimage.png
-compose指定覆蓋操作的類型,其中over為安全覆蓋,另外還有xor、in、out、atop等等
覆蓋的位置可以通過-gravity指定:
$convert image.png -gravity southeast -compose over overlay.png -composite newimage.png
這是將圖片覆蓋到底圖的右下角。
7,更改圖片的alpha通道
分兩步:
$convert image.png -define png:format=png32 image32.png $convert image32.png -channel alpha -fx "0.5" imagealpha.png
這個命令首先將image.png的格式改為png32(確保有alpha通道),然后更改alpha通道置為0.5,也就是半透明,值的范圍為0到1.0
可以使用將一張透明圖片覆蓋到原圖上的方式做水印圖片:
$convert image.png -gravity center -compose over overlay.png -composite newimage.png $convert image.png -gravity southeast -compose over overlay.png -composite newimage.png
8,拼接
橫向拼接(+append),下對齊(-gravity south):
$convert image1.png image2.png image3.png -gravity south +append result.png
縱向拼接(-append),右對齊(-gravity east):
$convert image1.png image2.png image3.png -gravity east -append result.png
9,格式轉(zhuǎn)換
$convert image.png image.jpg $convert image.png -define png:format=png32 newimage.png
10,文字注釋
$convert image.png -draw "text 0,20 'some text'" newimage.png
從文件text.txt中讀取文字,指定顏色,字體,大小,位置:
$convert source.jpg -font xxx.ttf -fill red -pointsize 48 -annotate +50+50 @text.txt result.jpg
11,去掉邊框
$convert image.png -trim -fuzz 10% newimage.png