2015-01-21 1 views
1

사용자가 이미지의 크기를 조절할 수있는 간단한 프로그램을 만들고 있습니다. 그러나 나는 문제가되었다. 내가 Image.open()를 사용하여 이미지를 열려고하면 다음 오류 얻을 :PIL assist Python

AttributeError: class Image has no attribute 'open'

나는 이것을 연구하고 그것을 변수에 그것을 만드는 것처럼 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() 

사람이 내가이 오류가있는 이유에 도움이 되거 수 :하지만 여기 Image

내 코드가 뭔가를 할당 난 아무 짓 내 코드에서 볼 수 없습니다. 어떤 도움을 크게 주시면 감사하겠습니다.

+0

당신의 Image.open : mode 인수 인 경우 주어진 "r"이어야합니다. – KevinDTimm

+0

@KevinDTimm이 오류의 원인은 아닙니다. 이미지 파일을 읽는 것조차 전에. 위의 ht 오류가 발생합니다. –

+0

정확하지만 다음 문제가 될 것입니다. – KevinDTimm

답변

1

당신은 정말 분명한 이유 from PIL Tkinter import *을 피하기 만한다 :

from PIL import ImageTk # add to imports 

# later on when loading selected image 

photo = ImageTk.PhotoImage(file = filePath) 
size = photo.width(), photo.height() 
print(size) 
2

ImageTkinterPIL에서 다음과 같이 바꿉니다. 당신은 당신이 대신 Tkinter Image

+0

이 작업을 수행하는 것을 막을 수있는 방법이 있나요? TKitner와 PIL을 사용하여 다른 GUI를 만들었 기 때문에 이상합니다. PIL Image.open()과 같은 문제가 발생하지 않았습니다. –

+0

PIL import image'를'import PIL.Image'로 가져오고'PIL.Image.Image'를 사용합니다. 편집 :'Image.Image'. – nwk

+0

나는 다음과 같은 오류가 발생했다 :'AttributeError : 'module'객체에 'Image'속성이 없다. –

1

사용 ImageTk에서 차별화하는 from PIL import IMAGE as img를 사용해야하는 경우