UnicodeDecodeError для PIL.Image.fromarray - PullRequest
0 голосов
/ 31 марта 2020

Я пытаюсь передать изображение 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)
...