python:tkinter中convas自定义改变图片大小,急!

用tkinter做了个小玩意,加上convas添加上图片,可以鼠标在画布内任意拖动,这些问题都一切正常,现在考虑到图片的大小问题,可能会随着使用者弄不同的图片选择不同的大小,所以这里希望能针对图片能自定义调整大小,例如到时在tkinter上加一个滑块来调整

创建图片的代码如下:

img2 = Image.open(filePath2)
img2 = img2.resize((int(img2.size[0] * 0.2), int(img2.size[1] * 0.2)), Image.ANTIALIAS)
#img2 = img.transpose(Image.FLIP_LEFT_RIGHT)
photo2 = ImageTk.PhotoImage(img2)
cv.create_image(w/2, h/2, image=photo2)

运行的结果如下:

img

希望达到的效果能在添加的图片,选择图片后,通过按钮或滑块触发一个事件,来放大或缩小,比如点一下,放大10%,点另一个按钮缩小10%
原理其实我倒是理解 ,但是convas中创建图片是通过Image来控制的大小,然后放到convas中去,但这里到底应该是直接调整图片大小还是画布大小呢?如果是只调整图片,那画布大小不变的话,图片大小会超出画布。最主要的还是不知道如何操作convas和里面的图片,网上找了半天没找到详细的convas的文档

可以的,要通过绑定event来实现,而且要继承类,event绑定类方法,改掉canvas的图片,不然图片每次会被刷新掉。
做个了小例子:

import tkinter as tk
from PIL import Image, ImageTk

class root(tk.Tk):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.cv = tk.Canvas(self)
        self.cv.pack()
        self.img = ImageTk.PhotoImage(Image.open(r'C:\Code\image\example.png'))
        self.img_width = self.img.width()
        self.img_height = self.img.height()
        self.cv_img = self.cv.create_image(200,100,image=self.img)
        self.btn1 = tk.Button(text='<<')
        self.btn2 = tk.Button(text='>>')
        self.btn1.pack(side='left')
        self.btn2.pack(side='right')
        self.btn1.bind('<Button-1>',self.smaller)
        self.btn2.bind('<Button-1>',self.bigger)

    def smaller(self,event):
        self.img_width -= 10
        self.img_height -= 10
        self.img = ImageTk.PhotoImage(Image.open(r'C:\Code\image\example.png').resize((self.img_width,self.img_height),Image.ANTIALIAS))
        self.cv.itemconfig(self.cv_img,image=self.img)

    def bigger(self,event):
        self.img_width += 10
        self.img_height += 10
        self.img = ImageTk.PhotoImage(Image.open(r'C:\Code\image\example.png').resize((self.img_width,self.img_height),Image.ANTIALIAS))
        self.cv.itemconfig(self.cv_img,image=self.img)
    
win=root()
win.mainloop()

还是用resize函数更改大小试试