如何为node.js中的每个用户生成图像

时间:2016-12-20 08:12:31

标签: node.js image-processing

我正在猜测node.js中socket.io上的数字游戏让我说这个人猜猜一个数字124,这显然是向用户显示的12_,我想告诉那个人完整的12_,如果他们猜到4是最后一位数,那就是正确的答案,如何通过socket.io发送包含每个人的文本12_的图像。我需要一种生成图像的方法。我相信为很多人存储图像会是一个坏主意。或者我可以简单地拥有7或8个普通背景,并在这些背景上动态叠加我想要的文本并将其发送给用户。

我尝试了什么 我不能使用node-canvas,因为它需要对Heroku的本机依赖 我不能使用GraphicsMagick作为Heroku的免费计划不支持它 任何建议

2 个答案:

答案 0 :(得分:1)

你必须阅读图像并转换为服务器端的base64

socket.emit('image', { image: true, buffer: buf.toString('base64') });

在客户端,您可以使用websocket接收图像

var ctx = document.getElementById('canvas').getContext('2d');

socket.on("image", function(info) {
  if (info.image) {
    var img = new Image();
    img.src = 'data:image/jpeg;base64,' + info.buffer;
    ctx.drawImage(img, 0, 0);
  }
});

答案 1 :(得分:0)

我知道这是一个非常古老的问题,但也许它对某人有帮助(因为关于此的信息非常少)。

我只是想说你可以在Heroku中使用GraphicsMagick和ImageMagick You just need to add a buildpack它可以工作(它甚至可以在免费实例上运行)。

这是我写的一篇博客文章,说我是如何使用GraphicsMagick in Node.js的。您可以查看the code on Github(公平警告,代码很糟糕,但嘿,它有效)。