NodeJS:服务于node-canvas生成的png

我想使用node-canvas生成并提供.png文件。 使用Express,这是我迄今为止所做的:

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; 

但是当我在浏览器中进入路由时,我看不到任何png。 我对节点的掌握并不足以理解正在发生的事情。 任何人都可以指出我正确的方向?

试试这个我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'); draw().pngStream().pipe(res); }); module.exports = router; 

注意代码draw().pngStream().pipe(res);

它将从您的Canvas中获取一个PNGstream,并将此stream传送到响应stream。 这样做,你不需要调用res.end() ,因为当你的PNGstream结束时,你的响应stream也会结束。