Linked Questions

Popular Questions

I'm able to pipe one image stream into a ImageMagick child process. I based my code off of Pipe stream to graphicsmagick/imagemagick child process

I want to composite multiple image streams and pipe the composited image as a response. Here is my Node.js code, in which it retrieves image from my AWS S3 bucket and then pipes that out as a response:

app.get('/composite_images', function(req, res){    
    res.writeHead(200, {'Content-Type' : 'image/png'});

    s3.get("/" + "fronttop.png").on("response", function(s3Res) {
      // '-'' means standard in or stdin
      var args = ['-', '-page', '+0+0', '-mosaic', '-'];
      var convert = spawn("convert", args);

      // This worked!
      s3Res.pipe(convert.stdin);

      convert.stdout.pipe(res);
      convert.stderr.pipe(process.stderr);
    }).end();
})

Official documentation says

"At this time IM does not allow you to just read one image from such a stream, process it, and then read another single image. All IM commands will always read the whole stream, and then close it. This is being fixed as part of IMv7 scripted processing."

Is it possible using GraphicsMagick/ImageMagick to composite multiple image streams?

Related Questions