Discord.js 将 base64 编码的图像发送到频道

时间:2021-01-11 23:41:45

标签: node.js discord.js

我已经在这里待了好几天了,我一直坚持最后一部分。 正如标题所暗示的那样,我的创作收到了一个 base64 编码的图像。然后将其加载到缓冲区并尝试将其发送到通道,如下所示:

sfbuffer = new Buffer.from(base64_img, "base64");
const finalattach = new Discord.MessageAttachment(sfbuffer);
message.channel.send(finalattach);

它确实发送了缓冲区,但它总是导致 this

加载的 base64 数据示例

data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAEA and so on...

我试过用文件选项发送它(甚至没有发送),并使用 .setimage 和 .attachfiles 作为嵌入,两者都产生相同的结果。请我在这上面敲我的头。所有的谷歌链接都是紫色的,我不知道还能做什么 D:

2 个答案:

答案 0 :(得分:1)

尝试这样的事情:

replyMessage.Attachments.Add(new Attachment()
{
     ContentUrl = $"data:image/jpeg;base64,{Convert.ToBase64String(bdata)}"
});

This 帖子回答了类似的问题。

答案 1 :(得分:1)

图像缓冲区不应包含 data:image/png;base64, 部分。只有非人类可读的数据

在逗号处拆分 base64 字符串,将其作为缓冲区加载到附件中并发送附件,例如

const sfbuff = new Buffer.from(base64_img.split(",")[1], "base64");
const sfattach = new Discord.MessageAttachment(sfbuff, "output.png");
message.channel.send(sfattach)

即使我明白了,没有 Aviv lo 我也做不到 谢谢大家:)