将utf8字符串(图像)解码为node.js中的buffer / Image

问题描述 投票:1回答:2

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

msg =����ExifII*��DuckyF��,Photoshop 3.08BIM%��Adobed����↵→→→→↵↵↵↵↵↵g����→!1AQa“q�2� B#$R3ђ%TbCSD EUrcs!1QA“a2qB#?65] JF(MR $ Pm�*�a��F�H7҄�Ҁ�7D�(�

console.log(typeOf msg)=> string

到目前为止,我试过这个:

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

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

javascript node.js string stream buffer
2个回答
0
投票

使用

let buffer = Buffer.from(new Uint8Array(msg));
...

0
投票

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

imageBuffer.toString('base64')

和:

let buffer = Buffer.from(msg, 'base64');
© www.soinside.com 2019 - 2024. All rights reserved.