15

如何使用 GM Node.js 执行“gm composition -gravity center change_image_url base_image_url”?

如何调用gm().command()&gm().in()gm().out()实现上述?

4

6 回答 6

17

挣扎了一个小时后,这是我对您的问题的解决方案:

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);
});

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

于 2014-10-28T08:40:48.380 回答
11

安装 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);
 });
于 2013-12-16T13:05:18.087 回答
3

我这样做是这样的:

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);

        });
于 2013-09-03T06:46:32.217 回答
2

为什么没有人使用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 年可用

于 2016-03-04T21:16:15.113 回答
1

如果要调整大小合并,可以使用:

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);
});
于 2016-11-15T15:59:40.530 回答
0

有幸暂时被限制在 Windows 机器上,我最终通过完全不使用“gm”模块解决了这个问题。出于某种原因,即使我通过它的安装程序安装了 graphics-magick,节点模块也拒绝在我的环境变量中找到它。但这可能与我正在尝试使用 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,我认为这是正确的便携方式。

于 2016-02-24T13:13:46.750 回答