Python PIL加载抛出AttributeError:'NoneType'对象没有属性'read'

时间:2010-08-02 06:41:53

标签: python load python-imaging-library

我几天来一直在努力解决这个错误,但进展甚微。基本上,我正在尝试读取图像文件,然后使用PIL在其上执行特定操作。 (我的最终目标是预先形成PIL粘贴操作)。

但是,每当我加载我的图像,然后在其上调用load()方法(诸如show(),paste(),resize()等操作都会调用load()方法),我得到一个奇怪的NoneType没有属性读错误。

我正在使用PIL 1.1.7并在OSX 10.6和Ubuntu 10.04上重现了这个错误。下面是我可以输入的最基本的ipython代码来产生错误。

以前有人见过这种情况吗?

非常感谢任何帮助。

In [1]: import os
In [2]: try:
   ...:     from PIL import Image
   ...: except ImportError:
   ...:     import Image
   ...: 
In [3]: from django.conf import settings
In [4]: bgImageFileHash = "d41d8cd98f00b204e9800998ecf8427e"
In [5]: bgImageFilePath = os.path.join(settings.MEDIA_ROOT,'uploads',"%s.jpg" % (bgImageFileHash)) 
In [6]: print bgImageFilePath 
------> print(bgImageFilePath )
/Users/test/Sites/env/mysite/proj/mysite/../mysite/media/uploads/d41d8cd98f00b204e9800998ecf8427e.jpg
In [7]: bgImageImage=Image.open(bgImageFilePath)
In [8]: bgImageImage.verify()
In [9]: bgImageImage.load()
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
/Users/test/Sites/env/mysite/proj/mysite/<ipython console> in <module>()
/Users/test/Sites/env/mysite/lib/python2.6/site-packages/PIL/ImageFile.pyc in load(self)
    168             read = self.load_read
    169         except AttributeError:
--> 170             read = self.fp.read
    171 
    172         try:
AttributeError: 'NoneType' object has no attribute 'read'

2 个答案:

答案 0 :(得分:7)

也许删除对verify()的调用,或者在verify()和load()之间再次调用open()?

关于验证()here的文件说:

  

...如果您在使用此方法后需要加载图像,则必须重新打开图像文件。

答案 1 :(得分:1)

这是一个愚蠢的事情,但我遇到了同样的错误,花了至少一个小时试图找到解决方案。然而问题实际上是我的,我传递的文件名是空白的并导致它抛出这个错误........呃..如果图书馆说“哦,你错过了文件名”本来不错'NoneType'对象没有属性'read'。这只是一个覆盆子pi和python 2.7只是仅供参考。