Может ли кто-нибудь помочь мне изменить размер изображения с помощью ImageTk?
У меня есть холст, и я буду помещать туда картины.
У меня разные картинки = разные размеры для всех картинок
И когда я прикрепляю изображение (всего одно) к холсту, я хочу, чтобы размер изображения изменялся так, чтобы оно поместилось на холсте, и оно по-прежнему сохраняло свои пропорции.
Помогите пожалуйста мне! Я новичок в PIL, Tkinter и Python.
Обновлять:
Я пытался использовать thumbnail
под Image
, но при изменении размера:
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()
Изображение, использованное выше: