OSError: не удается идентифицировать файл изображения ‹_io.StringIO объект по адресу 0x00000000022810D8›

Используйте win8 и python3.4, мне нужно преобразовать текст в изображения. Поэтому я пытаюсь реализовать сам. Но я сталкиваюсь с ошибкой OS. Я пытаюсь использовать BytesIO вместо StringIO, появляется ошибка «OSError: не удается идентифицировать файл изображения ‹ Объект _io.BytesIO в xxxx>.

Я до сих пор не могу найти причину.

Коды следующие:

# -*- coding: utf-8 -*-
import os
import pygame
from io import StringIO,BytesIO
from PIL import Image

pygame.init()
text = u'This is a test text,test 123.'
font_path = "C:/windows/fonts/simsun.ttc"
im = Image.new("RGB",(300,50),(255,255,255))
font = pygame.font.Font(os.path.join(font_path),22)
rtext = font.render(text, True, (0,0,0),(255,255,255))

sio = StringIO()
print(sio.getvalue())
pygame.image.save(rtext, sio)
sio.seek(0)
#print(sio.getvalue())
line = Image.open(sio)
im.paste(line,(10,5))

im.show()
im.save("t1.png")

Как я получаю эту ошибку:

Traceback (most recent call last):
  File "D:/mypython/learn/demo.py", line 19, in <module>
    line = Image.open(sio)
  File "D:\Python34\lib\site-packages\PIL\Image.py", line 2319, in open
    % (filename if filename else fp))
OSError: cannot identify image file <_io.StringIO object at 0x00000000022810D8>

person Moon    schedule 24.10.2016    source источник
comment
В любом случае вы нашли это работающим?   -  person Anuj    schedule 20.03.2018


Ответы (1)


line = Image.open(sio)

Насколько я понимаю, sio все еще StringIO(). Если вы пытаетесь открыть его как изображение, попробуйте открыть его с помощью line = Image.open(name), где name — это фактическое имя изображения, а не StringIO().

person SolarPixelGaming    schedule 01.11.2016