快速js多个操作gm(GraphicsMagick)模块

时间:2016-06-09 21:28:57

标签: node.js express graphicsmagick

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

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

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

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;

1 个答案:

答案 0 :(得分:2)

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

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

    });