gpt4 book ai didi

javascript - 将 PNG 从 GET 请求转换为 Node.js 中的可读流

转载 作者:行者123 更新时间:2023-11-30 00:05:23 25 4
gpt4 key购买 nike

我正在尝试制作一个可以发送猫图片的 Facebook 聊天机器人。我用 RESTful API获取猫的照片。它们作为原始 png 返回。下一步也是最后一步是将该图像转换为可读流,以便 Facebook Chat API可以作为附件发送。

我使用 request.js 来获取图像。 Request 的文档只提到将图像保存为文件和将文件读入stream.Readable。我想知道是否有办法绕过该临时文件,并将图像直接通过管道传输到 Facebook Chat API。

到目前为止,这是我的代码:

var request = require("request");
var stream = require("stream");

module.exports = function getCatPicture(api, threadID, body) {
var options = {
url: 'http://thecatapi.com/api/images/get?type=png',
encoding: 'base64'
}
var picStream = new stream.Readable;
request.get(options, function (error, response, body) {
picStream.push(body, 'base64');
var catPic = {
attachment: picStream
};
api.sendMessage(catPic, threadID);
return;
});
}

我收到一个错误:

Error in uploadAttachment Error: form-data: not implemented
Error in uploadAttachment at Readable._read (_stream_readable.js:457:22)
Error in uploadAttachment at Readable.read (_stream_readable.js:336:10)
Error in uploadAttachment at flow (_stream_readable.js:751:26)
Error in uploadAttachment at resume_ (_stream_readable.js:731:3)
Error in uploadAttachment at nextTickCallbackWith2Args (node.js:442:9)
Error in uploadAttachment at process._tickCallback (node.js:356:17)
Error in uploadAttachment { [Error: form-data: not implemented]
Error in uploadAttachment cause: [Error: form-data: not implemented],
Error in uploadAttachment isOperational: true }

最佳答案

这里有几个问题:

  1. 这是主要问题,您需要在新的Readable 流实例上实现._read()。即将发布的 Node 版本将有更好的错误消息。所以现在,您可以在创建 picStream 之后添加 picStream._read = function(n){};
  2. 图像被不必要地转换为 base64 并再次转换回来。您可以在 options 对象中设置 encoding: nullbody 将成为回调中的 Buffer 实例。然后你可以做picStream.push(body);
  3. 流没有结束。在执行 picStream.push(body);
  4. 之后添加 picStream.push(null);

最后,这有点离题,但是当 request 使用的底层 form-data 模块支持很多时,模块强制使用流有点愚蠢不同类型的值(包括用作文件内容的原始 Buffer 实例)。

关于javascript - 将 PNG 从 GET 请求转换为 Node.js 中的可读流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38731553/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com