我正在开发一个简单的程序,它允许用户重新调整图像大小。但是我遇到了一个问题。当我尝试使用Image.open()打开图像时,出现以下错误:
AttributeError: class Image has no attribute 'open'
我已经研究过了,这是从给Image分配一些东西,就像将其变成一个变量一样。但是我看不到我的代码已经完成了为Image分配某些内容的任何操作

这是我的代码:

from PIL import Image
from Tkinter import *
import tkFileDialog
import ttk

class Application(Frame):
    def __init__(self, parent):
        Frame.__init__(self,parent)
        self.pack(fill=BOTH)

        self.create_widgets()

   def create_widgets(self):
        self.tfr = Frame(self)
        self.tfr.pack(side=TOP)

    self.title = Label(self.tfr, font=("Arial", 20), text="Image Resizer")
    self.title.pack(side=TOP, fill=X, padx=40)

    self.spacer = Frame(self.tfr, bg="black")
    self.spacer.pack(side=TOP, fill=X)

    self.mfr = Frame(self)
    self.mfr.pack(side=TOP)

    self.brButton = ttk.Button(self.mfr, text="Browse", command=self.browse)
    self.brButton.pack(side=LEFT, padx=(0, 2), pady=2)

    self.diField = Label(self.mfr, text="File Path...", relief=SOLID, bd=1, width=25, anchor=W)
    self.diField.pack(side=LEFT)

    self.spacer2 = Frame(self, bg="black")
    self.spacer2.pack(side=TOP, fill=X)

    self.bfr = Frame(self)
    self.bfr.pack(side=TOP)

    self.rButton = ttk.Button(self.bfr, text="Resize", width=41, command=self.resize)
    self.rButton.pack(side=TOP, pady=2)

def browse(self):
    supportedFiles = [("PNG", "*.png"), ("JPEG", "*.jpg,*.jpeg,*.jpe,*.jfif"), ("GIF", "*.gif")]

    filePath = tkFileDialog.askopenfile(filetypes=supportedFiles, defaultextension=".png", mode="rb")

    if filePath != None:
        photo = Image.open(filePath, "rb")
        size = photo.size
        print(size)
    else:
        pass

def resize(self):
    print("Resize")

root = Tk()
root.title("Image Resizer")
root.resizable(0,0)

app = Application(root)

root.mainloop()

任何人都可以阐明为什么我会收到此错误。任何帮助是极大的赞赏..

最佳答案

出于明显的原因,您应该真正避免使用from PIL Tkinter import *,但如果必须这样做,则可以使用from PIL import IMAGE as imgTkinter Image区别

关于python - PIL协助Python,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28078276/

10-16 13:17