我正在尝试使用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)
我在这里想要做的是反转用户选择的图像并显示它。我见过其他人也遇到类似的问题,但是我还没有看到一个人出现“模式”错误(也许我错过了)。
答案 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
上应用操作。