aboutsummaryrefslogtreecommitdiff
path: root/test/resizable-image.py
blob: f298d3aae518aaf5c517d599aad2f687a61dc950 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
from tkinter import *
from PIL import ImageTk, Image

# class Content(Frame):
#     def __init__(self, master, *pargs):
#         Frame.__init__(self, master, *pargs)
# 
#     def set(self, image_file):
#         self.image = Image.open(image_file)
#         self.img_copy= self.image.copy()
#         self.background_image = ImageTk.PhotoImage(self.image)
# 
#         self.background = Label(self, image=self.background_image)
#         self.background.pack(fill=BOTH, expand=YES)
#         self.background.bind('<Configure>', self._resize_image)
#         self.background.bind('<Button-1>', self.destruct)
# 
#     def destruct(self, *pargs):
#         self.destroy()
# 
#     def _resize_image(self, event):
#         self.image = self.img_copy.resize((event.width, event.height))
#         self.background_image = ImageTk.PhotoImage(self.image)
#         self.background.configure(image=self.background_image)


class Content(Canvas):
    def __init__(self, master, *pargs):
        Canvas.__init__(self, master, *pargs)

    def set(self, image_file):
        self.image = Image.open(image_file)
        self.img_copy= self.image.copy()
        self.background_image = ImageTk.PhotoImage(self.image)

        self.image = self.create_image(0, 0, self.background_image)
        self.image.bind('<Configure>', self._resize_image)
        self.image.bind('<Button-1>', self.destruct)

    def destruct(self, *pargs):
        self.destroy()

    def _resize_image(self, event):
        self.image = self.img_copy.resize((event.width, event.height))
        self.background_image = ImageTk.PhotoImage(self.image)
        self.background.itemconfigure(self.image, image=self.background_image)

root = Tk()
root.geometry('800x450')
file = "assets/most-accurate-test.png"

image = ImageTk.PhotoImage(Image.open(file))
canvas = Canvas(root)
canvas.pack(fill='both', expand=TRUE)

image_id = canvas.create_image(0, 0, image=image, anchor='nw')
def resizer(e):
    global image1, resized_image, new_image
    image1 = Image.open(file)
    resized_image = image1.resize((e.width, e.height), Image.Resampling.LANCZOS)
    new_image = ImageTk.PhotoImage(resized_image)
    canvas.itemconfigure(image_id, image=new_image)

def change(e):
    global image1, resized_image, new_image, canvas, image, file
    file = "assets/types.png"
    image = ImageTk.PhotoImage(Image.open(file))
    print(canvas.winfo_width(), canvas.winfo_height())
    image1 = Image.open(file)
    resized_image = image1.resize((canvas.winfo_width(), canvas.winfo_height()), Image.Resampling.LANCZOS)
    new_image = ImageTk.PhotoImage(resized_image)
    canvas.itemconfigure(image_id, image=new_image)

canvas.bind('<Configure>', resizer)
canvas.bind('<Button-1>', change)

# content = Content(root)
# content.set(file)
# content.pack()
# exit()
 
root.mainloop()