将Base64缓冲区保存为映像到磁盘

Saving Base64 Buffer as an image to the Disk

本文关键字:映像 磁盘 保存 Base64 缓冲区      更新时间:2023-09-26

Node.js应用程序中,我通过Socket.io发送图像到服务器。在服务器上,我得到了这样的结果,我想把它保存在磁盘上。它保存了,但我不能打开图像和图像查看器说它损坏了!文件大小正确,但我打不开。代码中有什么我遗漏的吗?

    socket.on('newImage', function (data) {
       var img = data.image;
       var coded_img = new Buffer(img, 'base64');
       fs.writeFile("out.png", coded_img,'base64', function(err) {
             if (err) throw err;
             console.log('File saved.')
       });
    });

我解决了这个问题,使用这个函数,我恢复了主图像数据:

decodeBase64Image = function(dataString) {
    var matches = dataString.match(/^data:([A-Za-z-+'/]+);base64,(.+)$/),
        response = {};
    if (matches.length !== 3) {
        return new Error('Invalid input string');
    }
    response.type = matches[1];
    response.data = new Buffer(matches[2], 'base64');
    return response;
};