发送“画布”生成的图像,不保存到文件
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)? 完成。如果你愿意,你可以通过点击下面的编辑按钮来编辑你自己的答案以上是关于发送“画布”生成的图像,不保存到文件的主要内容,如果未能解决你的问题,请参考以下文章
画布图像的图像效果不使用 php 上传保存,但适用于下载相同的画布文件