我們經常會遇到服務器上傳的圖片進行裁剪或者增加logo等等一些操作,在node平台上該如何實現呢?
看到大家都在使用"gm"這個工具,功能很強大,但是在Windows平台上簡直就是各種坑啊,我整了一下午雖然解決了一部分問題,但還是選擇了另外一款不錯的,而且輕量級跨平台比較好的截圖模塊——images
安裝方式 npm install images
github地址為https://github.com/zhangyuanwei/node-images
正如作者所描述的,輕量級、跨平台、jquery風格
我這里僅列出幾個我們常用到的幾個功能的demo
1. 設置或者獲取圖片的大小
第一種:
1 var images = require("images"); 2 images("image/test.jpg") 3 .size() 4 .save("image/dist.jpg");
第二種
1 var images = require("images"); 2 images("image/test.jpg") 3 .width() 4 .save("image/dist.jpg");
以上兩種方式中如果不包含參數將會返回圖片的寬度或者高度,size返回的是一個json,{width:,height: },如果包含參數的話,圖片將會按照參數設置更改圖片大小(還有一個resize()接口也可以設置圖片的大小)
2. 繪制一個區域,目前images在這方面功能比較有限,只能畫方形。
1 var images = require("images"); 2 images(400,400) 3 .fill(255,0,0,0.5) 4 .save("image/dist.jpg");
以上代碼繪制了一塊400*400的紅色方塊
3. 將logo繪制到圖片中,這個還是比較實用的,直接上代碼
1 var images = require("images"); 2 images("image/test.jpg") 3 .draw(images("image/logo.jpg"),200,200) 4 .save("image/dist.jpg");
4. 截取圖片的一部分,這個功能及其有用,尤其是截取用戶頭像的時候,非常有意義
1 var images = require("images"); 2 images(images("image/test.jpg"),200,200,500,500) 3 .resize(100) 4 .save("image/dist.jpg");
這就是這個工具的幾個比較常用的一些功能,雖然相比gm少了很多,但是足夠滿足我們的大部分的基本需求了。