StringIO无法识别图像文件错误

时间:2015-06-29 22:15:52

标签: python image python-imaging-library pillow stringio

我使用以下代码在线检索图像:

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')

运行时,它会给我image not valid and error code is cannot identify image file <StringIO.StringIO instance at 0x7f6825b12e18>错误。但是相同的代码在我的Mac上运行完美。只有当我将代码部署到Ubuntu服务器时,我才遇到这样的问题。我检查了文档,我想我正确地使用StringIO。有人可以帮忙吗?非常感谢。

2 个答案:

答案 0 :(得分:2)

我刚刚使用pip install Pillow在几乎全新的Ubuntu 14.04上安装了Pillow。安装成功。但是,请查看安装摘要:

    --------------------------------------------------------------------
    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

在那边看*** JPEG support not available?我认为那是关键...

答案 1 :(得分:1)

你必须回放你的stringIO对象 - 只需在验证前致电im.seek(0), 在Image.open之前(并将im传递给它 - 没有必要 创建另一个stringIO对象);