如何从StringIO读取图像到PIL中Python

12 投票
1 回答
16362 浏览
提问于 2025-04-17 22:44

如何从StringIO读取图像到PIL库中?我会有一个StringIO对象。那我该怎么从里面读取图像呢?我甚至连从文件中读取图像都不会。哇!

from StringIO import StringIO
from PIL import Image

image_file = StringIO(open("test.gif",'rb').readlines())
im = Image.open(image_file)
print im.format, "%dx%d" % im.size, im.mode

Traceback (most recent call last):
  File "/home/ubuntu/workspace/receipt/imap_poller.py", line 22, in <module>
    im = Image.open(image_file)
  File "/usr/local/lib/python2.7/dist-packages/Pillow-2.3.1-py2.7-linux-x86_64.egg/PIL/Image.py", line 2028, in open
    raise IOError("cannot identify image file")
IOError: cannot identify image file

1 个回答

17

不要使用 readlines(),因为它会返回一个字符串的列表,这不是你想要的。如果你想从文件中获取字节数据,应该使用 read() 函数。

在我的电脑上,使用 read() 和一个 JPG 文件,示例就能直接运行:

# Python 2.x
>>>from StringIO import StringIO
# Python 3.x
>>>from io import StringIO

>>>from PIL import Image

>>>image_file = StringIO(open("test.jpg",'rb').read())
>>>im = Image.open(image_file)
>>>print im.size, im.mode
(2121, 3508) RGB

撰写回答