NodeJs里给图片添加水印

ImageMagickGraphicsMagick是两款强大的跨平台图片命令行工具,据说GraphicsMagick是从ImageMagick分支出来的,更稳定些.

Java平台图片处理包im4java使用JNI的方式封装了ImageMagick.NodeJs平台图片处理模块gm只需要GraphicsMagickImageMagick任选一种安装就好了.

使用gm进行图片处理非常之方便

var gm = require('gm');
gm('/path/to/image.jpg')
.resize(353, 257)
.autoOrient()
.write(writeStream, function (err) {
if (!err) console.log(' hooray! ');
});

但在Mac平台安装有些麻烦,由于GraphicsMagick使用了linux的图形库,所以需要先安装XQuartz,最新版本已经支持Mountain Lion了.

GraphicsMagick可以通过homebrew安装

brew install graphicsmagick

gm就不多说了npm install gm

gm目前只封装了GraphicsMagickconvert子命令,添加水印需要的用到composite子命令.所以只能采用下策:直接调用GraphicsMagick命令行接口

var spawn = require('child_process').spawn;
var composite = spawn('gm',
[
'composite',
'-gravity',
'SouthEast', //右下角
'-dissolve',
'80', //溶解度,和透明度类似
'watermark.png',
'src.jpg',
'dest.jpg'
]);
composite.stdout.on('data',function(data){
console.log(data);
});
composite.stderr.on('data',function(data){
console.log(data);
});
composite.on('exit',function(code){
if(code != 0){
console.log('gm composite process exited with code ' + code);
}
});