如何与gm node.js组合?

如何用GM Node.js做'gm composite -gravity center change_image_url base_image_url'?

如何调用gm().command()gm().in()gm().out()来实现上面的?

挣扎了一个小时之后,这里是我对你的问题的解决scheme:

 gm composite -gravity center change_image_url base_image_url 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); }); 

祝你好运! 希望这对其他人也有帮助:)

安装gm,(确保你已经安装了graphicsmagick

 npm install gm 

以下是我的示例代码合并两个图像在一起(使用gm.in

 var gm = require('gm'); 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); }); 

我这样做:

 var exec = require('child_process').exec var command = [ '-composite', '-watermark', '20x50', '-gravity', 'center', '-quality', 100, 'images/watermark.png', 'images/input.jpg', //input 'images/watermarked.png' //output ]; // making watermark through exec - child_process exec(command.join(' '), function(err, stdout, stderr) { if (err) console.log(err); }); 

为什么没有人使用composite命令? ( https://github.com/aheckmann/gm

 var gm = require('gm'); var bgImage = 'bg.jpg', frontImage = 'front.jpg', resultImage = 'result.jpg', xy = '+100+150'; gm(bgImage) .composite(frontImage) .geometry(xy) .write(resultImage, function (err) { if (!err) console.log('All done'); }); 

更新哦,我看了这个方法的来源的历史。 它只能在2014年使用

如果你想调整合并,你可以使用这个:

 gm() .in('-geometry', '+0+0') .in('./img/img1.png') .in('-geometry', '300x300+100+200') .in('./img/img2.png') .flatten() .write('resultGM.png', function (err) { if (err) console.log(err); }); 

有幸被限制在一台Windows机器的那一刻,我最终根本不使用“gm”模块来解决这个问题。 出于某种原因,即使我已经通过安装程序安装了graphicsmagick,节点模块拒绝在我的环境variables中find它。 但是这可能与我正在尝试使用Electron.js(与Node.js相似,但具有“疑难杂症”)的应用程序有关。

 var exec = require("child_process").execSync; var commandArray = [ __dirname + "/bin/graphicsMagick/gm.exe", // the relative path to the graphics-magick executable "-composite", "-gravity", "center", __dirname + "/data/images/qr/logo-small.png", // relative paths to the images you want to composite __dirname + "/data/images/qr/qr-webpage.png", __dirname + "/data/images/qr/qr-webpage-logo.png" // relative path to the result ]; var returnValue = exec(commandArray.join(" ")); 

对于Windows,我认为这是正确的便携方式。