我的另一篇文章: Nginx/Apache圖片縮略圖技術
1, 軟件環境
nodejs
npm
GraphicsMagick or ImageMagick
貌似ImageMagick在處理大圖片時比GraphicsMagick要快很多。
2, gm的一些關鍵函數
//1, 使用方式
var gm = require('gm');
gm("圖片源路徑")
.resize(200,0) //設置壓縮后的w/h
.setFormat('JPEG')
.quality(70) //設置壓縮質量: 0-100
.strip()
.autoOrient()
.write("壓縮后保存路徑" ,
function(err){console.log("err: " + err);})
//2, 獲取圖片尺寸
gm("圖片路徑").size(function(err,value){});
//3, 獲取圖片大小
gm("圖片路徑").filesize(function(err,value){});```
resize函數, 詳細參數
resize {w}x{h} {%} {@} {!} {<} {>}
這里需要注意第3個參數%
表示按照width/height的百分比, resize(70, 0, '%')表示寬度為原先的70%@
(×_×)表示不明白,貌似可以限制壓縮文件的filesize, gm文檔上是這樣描述的:
Use @ to specify the maximum area in pixels of an image.**! **
表示強制width/height, resize(70, 70, '%')表示輸出圖片尺寸70x70,圖片可能變形^
表示最小width/height, resize(70,70,'^')表示width/height最小不能小於70px>
表示只有源圖片的width or height超過指定的width/height時,圖片尺寸才會變。
如:源圖片大小:640x640, resize(1000, 1000)最終圖片尺寸不變。<
跟>正好相反,表示只有源圖片的width or height小於指定的width/height時,圖片尺寸才會變
gm默認使用GraphicsMagick處理圖片,如果你想使用ImageMagick,則:
var gm = require('gm');
var imageMagick = gm.subClass({ imageMagick: true })
//使用方式同上,把上面的gm(..)函數替換成imageMagick(..)函數即可