2015-09-11 2 views
5

ノードキャンバスを使用して.pngファイルを生成して提供したいと思います。私は私のブラウザでルートに行くときNodeJS:ノードキャンバスで生成されたPNGを配信

draw_badge.js

function draw() { 
    var Canvas = require('canvas'), 
     Image = Canvas.Image, 
     canvas = new Canvas(200, 200), 
     ctx = canvas.getContext('2d'); 

    ctx.font = '30px Impact'; 
    ctx.rotate(0.1); 
    ctx.fillText('Awesome!', 50, 100); 

    return canvas; 
} 

module.exports = draw; 

badge.js

var express = require('express'); 
var router = express.Router(); 
var draw = require('../lib/draw_badge.js'); 

router.get('/show', function (req, res, next) { 
    res.setHeader('Content-Type', 'image/png'); 
    res.end(draw()); 
}); 

module.exports = router; 

をしかし:Expressを使用して、これは私がこれまで行ってきているもの、私はpngが表示されません。ノードの私の把握は、何が起こっているのかを理解するのに十分なものではありません。誰かが私を正しい方向に向けることができますか?

答えて

6

この私N badge.js試してみてください。これは、応答ストリームにあなたのキャンバスと意志パイプからこのストリームをPNGストリームを取得します

var express = require('express'); 
var router = express.Router(); 
var draw = require('../lib/draw_badge.js'); 

router.get('/show', function (req, res, next) { 
    res.setHeader('Content-Type', 'image/png'); 
    draw().pngStream().pipe(res); 
}); 

module.exports = router; 

お知らせコードdraw().pngStream().pipe(res);

を。このようにすると、res.end()に電話する必要はありません。PNGストリームが終了すると、応答ストリームも終了するためです。

+0

ありがとうございました。 APIをより慎重にチェックする必要がありました。 –

関連する問題