後臺使用imagemagick的convert命令來處理圖片真是太方便了。

imagemagick文檔:http://www.imagemagick.org/script/command-line-options.php

convert功能強大,用來批處理圖片的放大、縮小、裁剪、旋轉、合併、水印、拼接、格式轉換等都非常方便,特別適合後臺的圖片處理。

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的區別在於-sample只進行了採樣,沒有進行插值,所以用來生成縮略圖最合適
$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即指定座標原點,有northwest:左上角,north:上邊中間,northeast:右上角,east:右邊中間……

5,旋轉 -rotate

$convert image.png -rotate 45 rotate.png
默認的背景爲白色,我們可以指定背景色:
$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,格式轉換

$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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章