Question

How to read image from StringIO into PIL in python? I will have a stringIO object. How to I read from it with a image in it? I cant event have ot read a image from a file. Wow!

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
Was it helpful?

Solution

Don't use readlines(), it returns a list of strings which is not what you want. To retrieve the bytes from the file, use read() function instead.

Your example worked out of the box with read() and a JPG file on my PC:

# 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
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top