如何解决Discord.Py 混合图片并在不下载的情况下发送它们
我有以下问题:
1.- 我想在不下载的情况下发送不和谐的文件。我不知道这是否可行,但我想用 BytesIo 发送它。
2.- 我的 Bot 文件中保存了一张图片,另一张来自 ctx.author.avatar
3.- 我想混合两个图像并发送结果。对于混合,我的意思是例如,如果我使用 cv2,我将使用 addWeighted()。
我知道的代码是下载会员的图片,使用 cv2 读取两张图片,调整它们的大小并使用 addWeighted。之后,我保存混合图片并将其作为消息发送。当一切都完成后,我删除了图片(包括头像和混合图片)。从我的角度来看,这确实效率低下,这就是为什么我想知道是否有办法使用 PIL 和 BytesIo 或使用 dataArray 来混合它们并在不下载的情况下发送它。
简而言之,我想知道是否有一种方法可以在不下载第二个图像(成员头像图片)的情况下混合两个图像并在不下载混合图像的情况下发送它。
如果需要,我可以使用我已有的代码,但由于我的代码是下载图片,我想这无济于事。
解决方法
您可以从消息 (Get a picture from the message) 中获取图像的 URL:
message.attachments[0].url
然后使用 requests
库 (How to open an image from an url with opencv using requests from python) 将图像加载到内存中
我最后找到的解决方法是只使用 Pillow 执行以下操作:
image1 = Image.open("img.jpg",mode='r')
image2 = Image.open(requests.get(url,stream=True).raw)
因为我在内存中有两个图像,所以我只需要调整它们的大小并混合。最后我只是使用 io.Bytes() 来制作字节并发送它。 如何混合 -> https://pythontic.com/image-processing/pillow/blend
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。