2015-09-11 13 views
5

Tôi muốn tạo và phân phát tệp .png bằng cách sử dụng nút-canvas. Sử dụng Express, đây là những gì tôi đã làm cho đến nay:NodeJS: phục vụ png được tạo bởi node-canvas

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; 

Nhưng khi tôi đi đến con đường trong trình duyệt của tôi , Tôi không thấy bất kỳ png nào. Nắm bắt của tôi về nút là không đủ vững chắc để hiểu những gì đang xảy ra. Bất cứ ai có thể chỉ cho tôi đi đúng hướng?

Trả lời

6

Hãy thử i này n 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; 

Thông báo mã draw().pngStream().pipe(res);

Nó sẽ có được một dòng PNG từ Canvas của bạn và sẽ ống dòng này vào dòng phản ứng. Làm theo cách này, bạn không cần phải gọi số res.end(), bởi vì khi luồng PNG của bạn kết thúc, luồng phản hồi của bạn sẽ kết thúc.

+0

Cảm ơn. Tôi nên kiểm tra API cẩn thận hơn. –

Các vấn đề liên quan