2014-05-10 131 views
12

由於某些原因,當我嘗試從BytesIO蒸汽製作圖像時,它無法識別圖像。這裏是我的代碼:PIL open()方法不能與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)) 

它引發錯誤的堆棧跟蹤:

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> 

我使用PIL的枕頭實施。

回答

20

將BytesIO視爲文件對象,在完成寫入映像後,文件的光標位於文件的末尾,因此當Image.open()試圖調用output.read()時,它立即獲取EOF。

您需要在通過outputImage.open()之前添加output.seek(0)

相關問題