2014-05-10 13 views
12

Per qualche motivo, quando provo a creare un'immagine da un vapore BytesIO, non è possibile identificare l'immagine. Qui è il mio codice:Metodo PIL open() non funzionante con BytesIO

from PIL import Image, ImageGrab 
from io import BytesIO 

i = ImageGrab.grab() 
i.resize((1280, 720)) 
output = BytesIO() 
i.save(output, format = "JPEG") 
output.flush() 
print(isinstance(Image.open(output), Image.Image)) 

E l'analisi dello stack dell'errore getta:

Traceback (most recent call last): 
    File "C:/Users/Natecat/PycharmProjects/Python/test.py", line 9, in <module> 
    print(isinstance(Image.open(output), Image.Image)) 
    File "C:\Python27\lib\site-packages\PIL\Image.py", line 2126, in open 
    % (filename if filename else fp)) 
IOError: cannot identify image file <_io.BytesIO object at 0x02394DB0> 

Sto usando l'attuazione cuscino di PIL.

risposta

20

Pensate BytesIO come un oggetto file, dopo aver finito di scrivere l'immagine, il cursore del file si trova alla fine del file, in modo che quando Image.open() tenta di chiamare output.read(), ottiene subito un EOF.

È necessario aggiungere un output.seek(0) prima di passare output a Image.open().

Problemi correlati