-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsave_photo_manager.py
48 lines (41 loc) · 1.52 KB
/
save_photo_manager.py
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
import flet as ft
from time import sleep
from PIL import ImageGrab
# TODO save image based on states, instead of using ImageGrab
def save_collage(e, page, save_photo_filename_text, photo_extension_dropdown):
new_color = e.page.controls[0].controls[-1].content.content.bgcolor
e.page.controls[0].controls[-1].content.content.border = ft.border.all(
1, new_color
)
min_top, max_top, min_left, max_left = 0, 0, 0, 0
for collage_item in (
e.page.controls[0].controls[-1].content.content.content.controls
):
photo = collage_item.content.content
photo.border = ft.border.all(1, new_color)
photo.update()
min_top = min(min_top, collage_item.top)
max_top = max(
max_top, collage_item.top + collage_item.content.content.height
)
min_left = min(min_left, collage_item.left)
max_left = max(
max_left, collage_item.left + collage_item.content.content.width
)
e.page.controls[0].controls[-1].content.content.update()
sleep(0.2) # seconds
# Define the region to capture (left, top, right, bottom)
# TODO define this dynamically
bbox = (
page.window.left + 370 + min_left,
page.window.top + 165 + min_top,
page.window.left + 380 + max_left,
page.window.top + 170 + max_top,
)
image = ImageGrab.grab(bbox)
temp = (
".\\output\\"
+ save_photo_filename_text.value.replace(" ", "_")
+ photo_extension_dropdown.value
)
image.save(temp)