Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to read image from StringIO into PIL in python

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
like image 621
Tampa Avatar asked Mar 18 '14 00:03

Tampa


1 Answers

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
like image 129
Paulo Bu Avatar answered Oct 20 '22 10:10

Paulo Bu