我可以将一张图片流传递到ImageMagick子进程中。本人在Pipe stream to graphicsmagick/imagemagick child process的基础上编写了代码。
我想将多个图像流合成,并将其作为响应传递。以下是我的Node.js代码,它从我的AWS S3存储桶中检索图像,然后将其作为响应输出:
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();
})
官方文档称:
"目前 IM 不允许您仅从此类流中读取一个图像,对其进行处理,然后读取另一张单独的图像。所有 IM 命令都将始终读取整个流,然后关闭它。这将作为 IMv7 脚本处理的一部分来修复。"
使用 GraphicsMagick/ImageMagick 可以合成多个图像流吗?
convert
是ImageMagick套件中的一个程序,就像ls
或sleep
一样 - 一个命令行程序。 - Mark Setchell