【发布时间】:2014-05-27 06:58:16
【问题描述】:
我正在编写一个在 HTML5 画布中绘制 socket.io 的游戏,当时间结束时,将图像发送到 node.js 服务器。有什么方法可以将该画布转换为图像,将 base64 中的图像发送到 node.js 应用程序,最后将其保存到服务器中?
【问题讨论】:
标签: javascript node.js socket.io
我正在编写一个在 HTML5 画布中绘制 socket.io 的游戏,当时间结束时,将图像发送到 node.js 服务器。有什么方法可以将该画布转换为图像,将 base64 中的图像发送到 node.js 应用程序,最后将其保存到服务器中?
【问题讨论】:
标签: javascript node.js socket.io
是的,canvas 元素提供了一个名为 toDataURL() 的方法。此方法返回一个data: URL,其中包含指定格式的图像的 base64 表示,默认为 PNG:
var canvas = document.getElementsByTagName('canvas')[0];
var dataUrl = canvas.toDataURL();
假设您使用的是 socket.io,您可以通过发出事件通过套接字发送此数据 URI:
var socket = io.connect('http://localhost');
socket.emit('image', dataUrl);
在Node端,你可以在socket上监听这个事件来获取图片:
io.sockets.on('connection', function (socket) {
socket.on('image', function (dataUrl) {
console.log(dataUrl);
});
});
然后,您可以根据需要修剪前缀 data:image/png;base64, 并将内容上传到服务器。
阅读更多关于MDN documentation for the canvas element的信息。
【讨论】: