Express js多个操作gm(GraphicsMagick)模块

与gm(GraphicsMagick)模块一起使用Expressjs。

当前(见代码)操作#1和#2在单独执行时正常工作,但它们不能一起工作(如下所示)。

我想在一个声明中结合这两个操作,有什么build议吗?

var express = require('express'); var router = express.Router(); var gm = require('gm'); // GraphicsMagick router.get('/', function(req, res) { gm('image.png') // Operation #1 .composite('topimage.png') .geometry('+200+200') // Operation #2 .drawText(5, 20, 'my text') .fontSize(20) .font(__dirname + 'fonts/MyFont.TTF') .stream(function streamOut (err, stdout, stderr) { stdout.pipe(res); //pipe to response }); }); module.exports = router; 

经过一段时间的努力,我发现gm()可以把一个Stream作为input参数。 下面的代码解决了我的问题。

 var express = require('express'); var router = express.Router(); var gm = require('gm'); // GraphicsMagick router.get('/', function(req, res) { gm(gm('image.png') // Operation #1 .composite('topimage.png') .geometry('+200+200') .stream()) // Operation #2 .drawText(5, 20, 'my text') .fontSize(20) .font(__dirname + 'fonts/MyFont.TTF') .stream(function streamOut (err, stdout, stderr) { stdout.pipe(res); //pipe to response }); });