Search code examples
pythonimagepython-imaging-librarystringio

StringIO Cannot Identify Image File Error


I'm using the following code to retrieve an image online:

import Image
import urllib2
import cStringIO

url = 'http://storage.googleapis.com/bloomsky-img/k65x5Kvpyc3W08jBqJ1kqZqnnZapoQ==.jpg'
img = urllib2.urlopen(url).read()
# error occurred when executing the line below
im = Image.open(cStringIO.StringIO(img))
im.verify()
# must reload the image after verify method !!
im = Image.open(cStringIO.StringIO(img))
im.save('name', 'JPEG')

When run, it gives me image not valid and error code is cannot identify image file <StringIO.StringIO instance at 0x7f6825b12e18> error. But the same code works perfect on my mac. Only when I deployed the code to an Ubuntu server, did I encounter such issue. I checked the documentations and I think I'm using StringIO in the correct way. Can anybody help? Thanks a lot.


Solution

  • I just installed Pillow on a nearly fresh Ubuntu 14.04, using pip install Pillow. The installation was successful. However, take a look on the installation summary:

        --------------------------------------------------------------------
        PIL SETUP SUMMARY
        --------------------------------------------------------------------
        version      Pillow 2.8.2
        platform     linux2 2.7.6 (default, Mar 22 2014, 22:59:56)
                     [GCC 4.8.2]
        --------------------------------------------------------------------
        *** TKINTER support not available
        (Tcl/Tk 8.6 libraries needed)
        *** JPEG support not available
        *** OPENJPEG (JPEG2000) support not available
        --- ZLIB (PNG/ZIP) support available
        *** LIBTIFF support not available
        *** FREETYPE2 support not available
        *** LITTLECMS2 support not available
        *** WEBP support not available
        *** WEBPMUX support not available
        --------------------------------------------------------------------
        To add a missing option, make sure you have the required
        library, and set the corresponding ROOT variable in the
        setup.py script.
        To check the build, run the selftest.py script.
        changing mode of build/scripts-2.7/pilconvert.py from 644 to 755
        changing mode of build/scripts-2.7/pildriver.py from 644 to 755
        changing mode of build/scripts-2.7/pilfile.py from 644 to 755
        changing mode of build/scripts-2.7/pilprint.py from 644 to 755
        changing mode of build/scripts-2.7/pilfont.py from 644 to 755
        changing mode of [...]
    Successfully installed Pillow-2.8.2
    

    See the *** JPEG support not available over there? I think that's the key...