Я пытаюсь передать изображение PIL функции как io.BytesIO()
, чтобы не сохранять его на жестком диске. Изображение является результатом нескольких изображений PIL, склеенных по горизонтали, и оно создается с помощью Image.new('RGB', (total_width, max_height))
. Когда вставка завершена, я создаю байтовый массив и сохраняю в нем изображение:
imgByteArr = io.BytesIO()
pasted_img.save(imgByteArr, format='PNG')
return imgByteArr.getvalue()
Результат должен быть загружен в объект discord.File , хотя эти ошибки показывают up:
Traceback (most recent call last):
File "C:\Program Files\Python-latest\lib\site-packages\discord\ext\commands\core.py", line 83, in wrapped
ret = await coro(*args, **kwargs)
File "D:/DiscordBot/scripts/uno/uno_client.py", line 167, in test
f = discord.File(new_im)
File "C:\Program Files\Python-latest\lib\site-packages\discord\file.py", line 68, in __init__
self.fp = open(fp, 'rb')
UnicodeDecodeError: 'utf-8' codec can't decode byte 0x89 in position 0: invalid start byte
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "C:\Program Files\Python-latest\lib\site-packages\discord\client.py", line 312, in _run_event
await coro(*args, **kwargs)
File "D:/Programmazione/DiscordBot/scripts/uno/uno_client.py", line 67, in on_command_error
raise error
File "C:\Program Files\Python-latest\lib\site-packages\discord\ext\commands\bot.py", line 892, in invoke
await ctx.command.invoke(ctx)
File "C:\Program Files\Python-latest\lib\site-packages\discord\ext\commands\core.py", line 797, in invoke
await injected(*ctx.args, **ctx.kwargs)
File "C:\Program Files\Python-latest\lib\site-packages\discord\ext\commands\core.py", line 92, in wrapped
raise CommandInvokeError(exc) from exc
discord.ext.commands.errors.CommandInvokeError: Command raised an exception: UnicodeDecodeError: 'utf-8' codec can't decode byte 0x89 in position 0: invalid start byte
EDIT
Я упомяну, что мне нужно отправить это изображение через сообщение Discord. Это то, что я использую, чтобы загрузить изображение и отправить его:
new_im = join_imgs(imgs) # the above-mentioned function
f = discord.File(new_im)
await channel.send('Test', file=f)