Search code examples
javascriptnode.jsgraphicsmagick

Adding if condition to Graphic Magic Command


I have the following command:

gm('input.jpg')
.crop(500, 500, 10, 10)
.write('output.jpg', function (err) {
  if (err) {
        console.log(err)
  } else {

        console.log('Success')
  }
})

I'd like to add a condition to it without having to write 2 different commands so it would be something like:

var overlay = true
gm('input.jpg')
.crop(500, 500, 10, 10)
if(overlay == true){
 .draw('image Over 0,0 750,750 overlay.jpg')
}
.write('output.jpg', function (err) {
  if (err) {
        console.log(err)
  } else {

        console.log('Success')
  }
})

I'm know the above code won't run, I'm looking for a suggestion for something that would work, without having 2 different GM commands


Solution

  • Unless there's something spectacularly magical about how the GM library works here, you can break the gm().crop().write() chain into smaller pieces, à la

    var overlay = true;
    // ...
    var g = gm('input.jpg').crop(500, 500, 10, 10);
    if (overlay) {
      g = g.draw('image Over 0,0 750,750 overlay.jpg');
    }
    g.write('output.jpg', function (err) {
      if (err) throw err;
      console.log('Success');
    });