AttributeError:“ str”对象没有属性“ mode”

时间:2019-03-03 14:30:17

标签: python python-imaging-library

我正在尝试使用PIL.ImageOps.invert(image)反转图像,但是我收到以下错误:AttributeError: 'str' object has no attribute 'mode'

这是我的代码:

# allows user to select image file from local
photo = filedialog.askopenfilename(initialdir="/", title="Select file", filetypes=(("png files", "*.png"), ("all files", "*.*")))
print(photo)

# creates canvas to display the image
canvas = Canvas(width=400, height=400)
canvas.pack()

inverted_image = PIL.ImageOps.invert(photo)

# reference to image object so it doesn't blanks it
label = Label(image=inverted_image)
label.image = inverted_image

canvas.create_image(200, 200, image=inverted_image, anchor=CENTER)

我在这里想要做的是反转用户选择的图像并显示它。我见过其他人也遇到类似的问题,但是我还没有看到一个人出现“模式”错误(也许我错过了)。

1 个答案:

答案 0 :(得分:1)

您正在将包含文件名的字符串对象传递给该函数。该值在此处设置:

photo = filedialog.askopenfilename(initialdir="/", title="Select file", filetypes=(("png files", "*.png"), ("all files", "*.*")))

photo是字符串,而不是图像对象。首先使用PIL.Image.open() function打开图像:

img = PIL.Image.open(photo)

然后在img上应用操作。