nodejs圖片處理工具gm用法


在做H5應用中,有時候會涉及到一些圖片加工處理的操作,nodejs有一個很好的后台圖片處理module,就是這里說的gm。gm有官方文檔,但感覺寫得太抽象,反而看不懂了。這里把一些常見的用法寫下,供大家參考。

安裝
首先要安裝 GraphicsMagick或者ImageMagick,然后

npm install --save gm
1
用法說明
圖片尺寸

gm('img.png')
.size(function (err, size) {
if (!err)
console.log(size.width > size.height ? 'wider' : 'taller than you');
});

 

圖片伸縮
可以只依據寬、高或者同時將寬高都放縮。

gm("img.png").resize(width)//保持寬高比
gm("img.png").resize(null, height)//保持寬高比
gm("img.png").resize(width, height, '!')//參數'!'用於忽略寬高比

 


圖片旋轉
將圖片旋轉degrees,背景填充color。

gm("img.png").rotate(color, degrees)
gm("img.png").rotate('green', 45)

 


圖片裁剪
從圖片的(x, y)位置開始,裁剪出一個寬為width,高為height的圖片來。

gm("img.png").crop(width, height, x, y)

 

圖片拼接(mosaic)

gm()
.in('-page', '+0+0')
.in('bg.jpg')
.in('-page', '+10+20') // location of smallIcon.jpg is x,y -> 10, 20
.in('smallIcon.jpg')
.mosaic()
.write('tesOutput.jpg', function (err) {
if (err) console.log(err);
});

 

圖片合成(compose)

gm()
.command("composite") 
.in("-gravity", "center")
.in(change_image_url)
.in(base_image_url)
.write( output_file, function (err) {
if (!err) 
console.log(' hooray! ');
else
console.log(err);
});

 

不太清楚圖片拼接(mosaic)與合成(compose)有什么區別,gm提供了兩條命令,對於簡單的圖片合成,好像都可以使用。

圖片拼接(append)
gm中使用append也可以實現圖片的拼接,與mosaic、compose不同的是,這里的拼接應該是不能覆蓋的。缺省參數ltr表示拼接方向,布爾變量,true表示從左到右,false表示從上到下,默認false。

gm("img.png").append(img [, img, ltr])
gm("img.png").append("another.jpg", "third.gif")//從上到下拼接
gm("img.png").append("another.jpg", "third.gif", true)//從左到右拼接

 

圖片注釋
在圖片的(x, y)位置繪制文字。

gm("img.png").drawText(10, 50, "from scratch")

 


創建圖片

gm(200, 400, "#ddff99f3")
.drawText(10, 50, "from scratch")
.write("/path/to/brandNewImg.jpg", function (err) {
// ...
});

 

總結
gm具有強大的圖片處理功能,nodejs還是借助於gm工具來實現的圖片處理,對於需要后台處理圖片的情形,這個是挺有用的。

gm提供的各個函數其實可以復合使用,就是說,先讀取(gm)圖片后,可以先進行拼接(mosaic, compose, append),然后裁剪(crop),放縮(resize)到指定大小后,最后才保存(write)下來。

gm的官方文檔感覺過於簡陋,網上的關於nodejs gm用法的資料也不多,本文將一些基本的用法總結下來,學到到新的持續更新。

另外,歡迎大家總結nodejs gm資料!

 

 

http://aheckmann.github.io/gm/docs.html

http://www.graphicsmagick.org/GraphicsMagick.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM