我正在接收流中的图像,如下所示(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();
问题是:无法重现相同的图像。输出缓冲区大小不同于图像的输入缓冲区。
使用
let buffer = Buffer.from(new Uint8Array(msg));
...
不要将二进制文件作为utf-8字符串发送。试试base64:
imageBuffer.toString('base64')
和:
let buffer = Buffer.from(msg, 'base64');