我正在尝试从服务器上的画布保存图像,但是图像未打开(不支持格式)。
客户:
const canvas = document.getElementById('canvas');
var sendData = () => {
const dataURL = canvas.toDataURL();
socket.emit('sendImage', dataURL.toString('base64'));
};
服务器:
io.on('connection', function(socket) {
socket.on('sendImage', (imageData) => {
fs.writeFile(__dirname + '/image.png', imageData, function (err)
{
if (err) throw err;
console.log('It\'s saved!');
});
});
});
答案 0 :(得分:0)
我找到了解决方法。
客户:
dataURL.toString('base64')具有base64编码的数据,格式为
data:image / png; base64,/ 9j / 4AAQSkZJRgABA ... 因此,我们需要摆脱前面的mime类型和编码信息。
var sendData = () => {
const dataURL = canvas.toDataURL().toString('base64');
const toSend = dataURL.split(',')[1];
socket.emit('sendImage', toSend);
};
服务器:
现在我们需要转换其缓冲区。
fs.writeFile(__dirname + '/image.png', Buffer.from(imageData, 'base64'), function
(err) {
if (err) throw err;
console.log('It\'s saved!');
});