无法使用Python的Image.open()打开图像

0 投票
3 回答
10053 浏览
提问于 2025-04-15 22:11

我的代码是:

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

当我调用这个函数时,我遇到了一个错误:

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

但是在控制台里:

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

我没有任何问题。
有什么想法吗?
谢谢!

3 个回答

0

这说明你可能在某个时候创建了一个叫做 Image 的(新式)类,或者从别的地方导入了它(可能是不小心通过“*”导入的),而这个时候是在你导入了“Image”之后:

>>> 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”来查看,这样应该会给你类似下面的结果:

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

你的代码里是不是有错误的语句:

from Image import Image

或者

from Image import *

Image模块里面有一个Image类,但它们是不同的(这个模块还有一个open方法)。如果你用这两种写法中的任何一种,Image就会错误地指向这个类。

补充:还有一种可能是你自己定义了一个冲突的Image名字。你有没有自己的Image类?如果有的话,改个名字吧。

4

你遇到的这个问题挺奇怪的,因为它提示你说“Image”是一个类型对象,而不是一个模块。你在代码的其他地方有没有把“Image”赋值给其他东西呢?

撰写回答