在Node.js中将缓冲区转换为二进制

8

我正在使用axios从以下URL请求图片:

const response = await axios.get('https://asite.dom/image/url', { responseType: 'arrayBuffer' }); 

我不需要也不想将文件保存在本地。我只需要原始二进制数据以检查图像尺寸。

因此,我不希望这样做。

const bufferImage = Buffer.from(response.data, 'binary');

因为那是缓冲区而不是二进制数据。

我尝试过进行访问。

response.data

直接读取也不能得到图片的二进制数据。

有人能帮我吗?

1个回答

8

我刚测试了一下,它确实可行:

const response = await axios.get(
  'https://example.com/image.png', { responseType: 'arraybuffer' }
); 

const bin = response.data.toString('binary');
console.log(bin);

关键似乎在于您将 arraybuffer 中的 b 大写了。此外,response.data 已经是一个缓冲区,所以您可以直接将其转换为字符串。

是的,那就是问题所在。 - LongHike
哦,谢谢!我花了一天半的时间尝试找到正确的组合。我认为很多地方在文档中都使用大写字母B。 - user2217751

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接