gpt4 book ai didi

python - 如何在不保存图像的情况下将 PIL Image 对象上传到 Discord 聊天?

转载 作者:行者123 更新时间:2023-12-03 14:54:32 28 4
gpt4 key购买 nike

我正在尝试将 PIL Image 对象发送到不和谐聊天(虽然我不想保存文件)
我有一个函数可以从互联网上收集图像,将它们垂直连接在一起,然后返回一个 PIL Image 对象。

下面的代码从我本地机器上的 PIL Image 对象创建一个文件图像,然后将其发送到 Discord 聊天。我不想经常在我的机器上重新创建和保存文件图像。如何只发送 PIL Image 对象,而不必每次发送请求时都保存图像?

from PIL import Image
from io import BytesIO
import requests
import discord

# Initializes Discord Client
client = discord.Client()

# List of market indexes
indexes = [
'https://finviz.com/image.ashx?dow',
'https://finviz.com/image.ashx?nasdaq',
'https://finviz.com/image.ashx?sp500'
]


# Returns a vertical image of market indexes
def create_image():
im = []
for index in indexes:
response = requests.get(index)
im.append(Image.open(BytesIO(response.content)))

dst = Image.new('RGB', (im[0].width, im[0].height + im[1].height + im[2].height))
dst.paste(im[0], (0, 0))
dst.paste(im[1], (0, im[0].height))
dst.paste(im[2], (0, im[0].height + im[1].height))

return dst


# Prints when bot is online
@client.event
async def on_ready():
print('{0.user} is online'.format(client))


# Uploads vertical image of market indexes when requested
@client.event
async def on_message(message):
if message.content.startswith('^index'):
create_image().save('index.png')
await message.channel.send(file=discord.File('index.png'))

解决方案:
@client.event
async def on_message(message):
if message.content.startswith('^index'):
with BytesIO() as image_binary:
create_image().save(image_binary, 'PNG')
image_binary.seek(0)
await message.channel.send(file=discord.File(fp=image_binary, filename='image.png'))

最佳答案

将我的解决方案作为单独的答案发布。感谢 Ceres 的推荐。

@client.event
async def on_message(message):
if message.content.startswith('^index'):
with BytesIO() as image_binary:
create_image().save(image_binary, 'PNG')
image_binary.seek(0)
await message.channel.send(file=discord.File(fp=image_binary, filename='image.png'))

关于python - 如何在不保存图像的情况下将 PIL Image 对象上传到 Discord 聊天?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59868527/

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