发送“画布”生成的图像,不保存到文件

Posted

技术标签:

【中文标题】发送“画布”生成的图像,不保存到文件【英文标题】:Send the image generated by "canvas", without saving it to a file 【发布时间】:2019-01-04 00:43:55 【问题描述】:

是否可以将图像作为 base64、缓冲区或 DataURL 发送? 正如我在源代码 Discord.JS 中看到的,它只能附加 URL、文件或管道流。但是还有其他方法吗?

【问题讨论】:

【参考方案1】:

我不是很喜欢这个东西,但我认为你可以发送一个缓冲区:在TextChannel.send() 的文档中,它说你可以发送一个BufferResolvable,或者通过发送带有该文件的Attachment 或者通过在MessageOptions 中将其设置为.file,您可以传入send() 函数。

【讨论】:

哦,我尝试了你所有的方法。但是以 file:buffer 和 files:[buffer] 的形式发送缓冲区会返回错误“资源必须是字符串或缓冲区。” .检查代码后,我发现代码 [Discord.JS 11.1.x: /src/client/ClientDataResolver.js]: github.com/discordjs/discord.js/blob/11.1.0/src/client/… 因此无法通过这种方式将图像作为缓冲区发送。 在新版本中有管道流检查。所以我可以写伪管道对象:jsfiddle.net/bgL7ouqv/1 刚刚注意到该函数的第一行...奇怪,但是在发送缓冲区时它不起作用并且我看到一个错误... 在调试该函数时,注意到“资源”参数未定义s22.postimg.cc/ddt6tuklt/image.png我的代码:s22.postimg.cc/gknqdifch/image.png 哦,是 Discord.js 11.0.0 的 bug【参考方案2】:

问题在于 Federico Grandi 的回答中描述的方法, 不适用于 11.1.0 版。 (处理缓冲区的函数未定义)。

升级到11.3.2版本后,问题解决了。

【讨论】:

如果我在答案中有语法和词汇错误 - 请编辑。 并且(如果可以的话)将图片链接放入 ![screenshot](URL) 很高兴听到这个消息!使用稳定版本通常可以避免出现此类错误。正如你所问的,我建议对你的答案进行修改 @FedericoGrandi 哦...图片不见了...也许使用更好![screenshot](s22.postimg.cc/ddt6tuklt/image.png)? 完成。如果你愿意,你可以通过点击下面的编辑按钮来编辑你自己的答案

以上是关于发送“画布”生成的图像,不保存到文件的主要内容,如果未能解决你的问题,请参考以下文章

将 HTML5 画布图像保存到数据库

仅使用 Javascript 将画布图像保存到服务器

如何从画布保存多个生成的文件

画布图像的图像效果不使用 php 上传保存,但适用于下载相同的画布文件

如何将使用 InkCanvas 在画布上完成的工作保存到 UWP C# 中的图像文件?

如何将画布数据保存到文件