2016-10-24 8 views
0

Использовать win8 и python3.4, мне нужно преобразовать текст в изображения. Так что я пытаюсь реализовать сам. Но я сталкиваюсь с OSError.I пытаюсь использовать BytesIO вместо StringIO, появится ошибка «OSError: не может идентифицировать файл изображения < объекта _io.BytesIO на ххом>OSError: невозможно идентифицировать файл изображения <_io.StringIO object at 0x00000000022810D8>

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

код следующим образом:..

# -*- 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> 

ответ

0
line = Image.open(sio) 

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