2010-04-30 60 views
0

我的代码读取无法打开图像:在控制台与Python的Image.open()

⇝ AttributeError: type object 'Image' has no attribute 'open' 

但是:

import Image 
def generateThumbnail(self, width, height): 
    """ 
    Generates thumbnails for an image 
    """ 
    im = Image.open(self._file) 

当我调用这个函数,我得到一个错误

import Image 
im = Image.open('test.jpg') 

我没问题。 有什么建议吗? 谢谢!

+0

你可以发布整个文件,给你这个错误? – 2010-04-30 04:24:24

回答

4

奇怪的是,你得到一个关于图像是一个类型对象,而不是一个模块的异常。 'Image'被分配到代码的其他地方吗?

+0

这是一个愚蠢的问题,对不起。我班的名字是Image,所以有冲突。感谢您的帮助! – ensnare 2010-04-30 16:25:08

1

请问您的实际代码有不正确的语句:

from Image import Image 

from Image import * 

图像模块包含一个图像类,但它们当然是不同的(该模块具有开放的方法) 。如果您使用这两种形式中的任何一种,Image将错误地引用该类。

编辑:另一种可能性是你自己定义一个冲突的图像名称。你有你自己的图像类吗?如果是这样,请重命名它。

+0

嗨 - 我试过这两个都没有成功。 – ensnare 2010-04-30 03:22:26

+0

这些行是错误的可能原因,而不是建议。如果你之前没有使用过这样的代码,Chris可能是对的。图像在其他地方被分配了错误的值(也许你有自己的Image类?) – 2010-04-30 03:25:59

0

这是你已经创建了一个(新式)类中调用图片,或从别的地方进口它(也许不经意间,从一个“*”进口),在某些时候是一致导入“图片”后:

>>> import Image 
>>> Image.open 
<function open at 0x99e3b0> 
>>> class Image(object): pass 
... 
>>> Image.open 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
AttributeError: type object 'Image' has no attribute 'open' 
>>> 

寻找这个。你可以检查“打印图像”,这应该给你类似的东西:

>>> print Image 
<class 'foo.Image'> 
>>>