首页 > 解决方案 > 将 utf8 字符串(图像)解码为 node.js 中的缓冲区/图像

问题描述

我正在接收流中的图像,如下所示(imageBuffer.toString('utf8'))在接收之前转换为 utf8 字符串,但是当我尝试使用以下数据创建缓冲区时,缓冲区似乎不同并且无法重新创建图像。

msg = ����ExifII*��DuckyF��,Photoshop 3.08BIM%��Adobed����↵→→→→↵↵↵ ↵↵��g����→!1AQa"q�2� �B#��R3ђ��$T���bCSD��%EU�r�cs��!1QA����"a2q�B#���?�65�]����jF(mR�$ Pm.*.a.F.H7..7D.(.

console.log( typeOf msg ) => 字符串

到目前为止,我已经尝试过:

let buffer = Buffer.from(msg, 'utf8');
let writable = require('fs').createWriteStream( '/home/test.jpg);
writable.write(buffer);
writable.end();

问题是:无法重现相同的图像。输出缓冲区大小与图像的输入缓冲区不同。

标签: javascriptnode.jsstringstreambuffer

解决方案


不要将二进制作为 utf-8 字符串发送。尝试base64:

imageBuffer.toString('base64')

和:

let buffer = Buffer.from(msg, 'base64');

推荐阅读