PIL认为我给它的每张图片都已损坏

时间:2017-03-19 19:02:41

标签: python-imaging-library pillow truncated

我正在尝试获取jpeg的RGB值数组。使用代码

from PIL import Image
im = Image.open('lion.jpg')
pix = list(im.getdata())    

给出错误

IOError: broken data stream when reading image file

代码中的图片是这个,我从谷歌进行测试: a lion

但代码会为我尝试的每张图片返回相同的错误,来自各种来源(谷歌,手机等)。当我向前推进并加载图像时,所有像素值都是黑色。

我已经尝试过了

from PIL import Image, ImageFile
ImageFile.LOAD_TRUNCATED_IMAGES = True

但所有这一切都是为了抑制错误;像素值仍为黑色。

似乎其他人在其他地方遇到过这个问题,比如here,但到目前为止,其他解决方案都让我失望了。有什么建议吗?

我在Mac 10.10上,使用python 2.7.8。我首先使用pip安装枕头,然后从源头安装枕头。我已确认已安装libjpeg

1 个答案:

答案 0 :(得分:0)

我真的没有答案,但是我可以为你提供适合我的设置。

以下脚本:

from PIL import Image

if __name__ == '__main__':
    im = Image.open('lion.jpg'))
    pix = list(im.getdata())
    print('The image has {} pixels'.format(len(pix)))

    import PIL, sys
    print('Using Python version {}'.format(sys.version))
    print('Using PIL version {}'.format(PIL.VERSION))
    print('Using Pillow version {}'.format(PIL.PILLOW_VERSION))

使用OS X El Capitan(10.11.6)在我的Macbook上获得结果:

The image has 1183000 pixels
Using Python version 3.5.1 |Continuum Analytics, Inc.| (default, Dec  7 2015, 11:24:55) 
[GCC 4.2.1 (Apple Inc. build 5577)]
Using PIL version 1.1.7
Using Pillow version 3.1.0

Process finished with exit code 0