1

我有一张图片,想使用 Node.js 在其上应用水印(另一张图片)。要求是水印不应该是实心图片(我可以用 gm 库的 draw() 来做),而是半透明的。您能建议使用任何工具吗?

4

3 回答 3

5

通过分叉子进程从命令行使用 ImageMagick

// Require our module dependencies
var exec = require('child_process').exec;

// Create command array to invoke ImageMagick composite where
// -dissolve is the amount of transparency for the watermark
// -gravity tells how to align images of varying size
// -quality is the image quality of the JPEG (not required if producing PNG)
var command = [
    'composite',
    '-dissolve', '50%',
    '-gravity', 'center', 
    '-quality', 100,
    '/path/to/watermark.png',
    '/path/to/image.jpg',
    '/path/to/save/result.jpg';
];

// Join command array by a space character and then execute command
exec(command.join(' '), function(err, stdout, stderr) {
    // Do stuff with result here
});

如果您需要 API 抽象,这里有一个很棒的模块https://github.com/rsms/node-imagemagick

于 2012-11-08T18:52:05.703 回答
5

您可以使水印图像半透明并将其与 gm 一起使用:

gm('/path/to/input-image.jpg')
.draw(['image Over 0,0 0,0 /path/to/half-transparent-watermark-image.png'])
.write('/path/to/output-image.jpg', function(e){
 console.log(e||'done'); // What would you like to do here?
});
于 2014-09-18T10:36:00.680 回答
-2

我使用代码

gm('/path/to/input-image.jpg')
.draw(['image Over 0,0 0,0 /path/to/half-transparent-watermark-image.png'])
.write('/path/to/output-image.jpg', function(e){
 console.log(e||'done'); // What would you like to do here?
});

错误:命令失败:转换:不合格的绘图图元定义`/path/to/half-transparent-watermark-image.png''@draw.c/DrawImage/3124

于 2015-05-04T04:20:20.887 回答