2014-03-28 3 views
0

ImageTk를 사용하여 이미지 크기를 조정하는 방법을 알려 준 사람이 누구입니까?이미지 크기를 조정하고 캔버스 크기에 맞추기 [Tkinter | PhotoImage]

나는 캔버스를 가지고 거기에 사진을 찍을 것이다.

나는 모든 사진

그리고 캔버스에 그림을 (한) 연결할 때, 나는 그림의 크기는 캔버스에 맞도록 크기를 조정하고 싶은에 대한 사진의 종류 = 다른 크기를 가지고 그것의 비율을 여전히 유지할 것입니다.

도와주세요! 필자는 PIL, Tkinter, Python을 처음 접했습니다.

갱신 :

내가 Image에서 thumbnail를 사용하여 시도

하지만 크기 조정의 :

self.image.thumbnail(self.picsize,Image.ANTIALIAS) 

이미지가 캔버스 크기를 피팅되지 않고 이미지가 캔버스 이상/넓은 경우, 그것은 단지입니다 절단. 위

from PIL import ImageTk 
from Tkinter import * 
import os,tkFileDialog,Image 

picsize = 250,250 # I want to set this so that it will fit in the self.imagecanvas | Every images attached will share same Size 
imagepath = "Default_ProPic.jpg" 
class GUI(): 
    global picsize 
    def display(self): 
     self.canvas = Canvas(width=1200,height=700) 
     self.canvas.pack() 

     self.imagecanvas = Canvas(self.canvas,width=400,height=400) 
     self.imagecanvas.place(x=980,y=180) 
     self.image = Image.open(imagepath) 
     self.image.thumbnail(picsize,Image.ANTIALIAS) 
     self.newimage = ImageTk.PhotoImage(self.image) 
     self.profile_picture=self.imagecanvas.create_image(0,0,anchor = NW,image=self.newimage) 

     attachbutton = Button(self.canvas,text="  Profile Pic  ",command=lambda:self.attachpic()) 
     attachbutton.place(x=1030,y=320) 

     mainloop() 

    def attachpic(self): 
     global picsize 
     attachphoto = tkFileDialog.askopenfilename(title="Attach photo") 
     self.image = Image.open(attachphoto) 
     self.image.thumbnail(picsize,Image.ANTIALIAS) 
     self.newimage = ImageTk.PhotoImage(self.image) 
     self.imagecanvas.itemconfigure(self.profile_picture, image=self.newimage) 

GUI = GUI() 
GUI.display() 

사진을 사용 :


코드 (캔버스에 맞게 크기를 조정하지 않음) enter image description here

+0

[슬라이드 쇼 응용 프로그램은 Tkinter에서 구현되었습니다. 그것은 응용 프로그램 내부에 맞게 이미지의 크기를 조정합니다. 창] (https://gist.github.com/zed/8b05c3ea0302f0e2c14c) – jfs

답변

0

별도의 변수로 썸네일을 저장하십시오 :

self.thmb_img = self.image.thumbnail(picsize, Image.ANTIALIAS) 

나는 원래 원하는 (250, 250과 동일

def attachpic(self): 
    picsize = 250, 250 
    attachphoto = tkFileDialog.askopenfilename(title="Attach photo") 
    self.image = Image.open(attachphoto) 
    print self.image.size() 
    self.thmb_img = self.image.thumbnail(picsize,Image.ANTIALIAS) 
    print self.thmb_img.size() 

확인 출력 크기를 확인 : 원래 self.image = Image.open(attachphoto)

내가 함께 무슨 일이 일어나고 있는지 크기보고 제안 복용 할 수있다 SPECT) 축소판.

관련 문제