Как и в названии, я просто хочу сгенерировать изображение на сервере, а затем выполнить его в браузере через Iron Router.Как создать образы на стороне сервера в Meteor и обслуживать их через Iron Router?
Вот что я до сих пор:
сервер/methods.js:
Meteor.methods({
getImage(cardId, styleId) {
var canvas = new Canvas(500, 200);
var ctx = canvas.getContext('2d');
ctx.font = '26px "Comic Sans"';
ctx.fillText('Hello World', 50, 80);
var buffer = canvas.toBuffer();
buffer = canvas.toDataURL();
return buffer;
}
});
маршруты/routes.js:
Router.route('/i/:cardid/:styleid.png', function() {
var imgContent = Meteor.call('getImage', this.params.cardid, this.params.styleid);
//imgContent = `<html><body><img src="${imgContent}"></body></html>`;
this.response.writeHeader('200', {
'Content-Type': 'image/png',
'Content-Length': imgContent.length
});
this.response.write(imgContent);
this.response.end();
}, {where: 'server'});
Если я раскомментировать строка в routes.js и комментарий image/png
, я могу получить изображение для отображения внутри тега изображения HTML, однако это не хочу, я хочу, поскольку я просто хочу показывать фактическое изображение, а не HTML.
Любая помощь была бы принята с благодарностью. Благодаря!
EDIT Я также попытался это возвращение:
var buffer = canvas.toBuffer();
//buffer = canvas.toDataURL();
buffer = new Buffer(buffer, 'binary').toString('base64');
без успеха.
EDIT 2 В основном я пытаюсь сделать это: NodeJS: serve png generated by node-canvas но только с Метеор, Canvas и Железный маршрутизатор.
Я не верю, что это возможно в маршрутизаторе. Маршрутизатор хочет отобразить html-шаблон. Метеор будет автоматически добавлять '
...' вокруг шаблона. –