Проблема с сохранением файла canvas tk python

Всем привет! Цель сделать графический редактор для рисования. Рисунок сохраняется не в правильном размере и положении. Сохраняется как будто скриншот, причем с захватом части моего экрана пк и не полный рисунок, а только его четверть. Как сохранить именно рисунок? Вот мой код:

import tkinter as tk
from tkinter import filedialog
from tkinter import messagebox
from PIL import Image, ImageDraw, ImageGrab
root = tk.Tk()
root.title("релакс рисование")
canvas = tk.Canvas(root, width=1000, height=800, bg='white')
canvas.pack()
current_color = "black"
def change_color(color):
    global current_color
    current_color = color
colors = ["black", "red", "green", "pink", "gray", "blue", "yellow", "violet", "darkgreen", "orange"]
for color in colors:
    color_button = tk.Button(root, bg=color, width=2, command=lambda c=color: change_color(c))
    color_button.pack(side='right')
def draw(event):
    x, y = event.x, event.y
    canvas.create_oval(x, y, x+4, y+4, fill=current_color, width=0)
def save_image():
    x = root.winfo_rootx() + canvas.winfo_x()
    y = root.winfo_rooty() + canvas.winfo_y()
    x1 = x + canvas.winfo_width()
    y1 = y + canvas.winfo_height()
    # открываем диалоговое окно для сохранения файла и возвращаем путь к сохранённому файлу
    filename = filedialog.asksaveasfilename(defaultextension=".png", filetypes=[("png files", "*.png")])
    if filename:
        image = ImageGrab.grab(bbox=(x, y, x1, y1))
        image.save(filename)
        messagebox.showinfo("сохранение", "Изображение сохранено успешно!")
def show_image():
    filename = filedialog.askopenfilename(filetypes=[("png files", "*.png")])
    if filename:
        image = Image.open(filename)
        image.show()
save_button = tk.Button(root, text="Сохранить", command=save_image)
save_button.pack(side='left')
show_button = tk.Button(root, text="Показать", command=show_image)
show_button.pack(side='left')
canvas.bind("<B1-Motion>", draw)
root.mainloop()

У меня получилось сделать так, чтоб рисунок сохранятся в виде файла png, теперь нужно подобрать правильные параметры для сохранения


Ответы (0 шт):