Я работаю над проектом, который придает фотографии квадратную рамку. Я пытаюсь создать GUI, где вы выбираете фотографию из своих файлов, и она автоматически изменяет размер и сохраняет фотографию.
У меня написан код изменения размера, открывается диалоговое окно файла, и я могу получить этикетка фотографии. Есть ли способ использовать эту метку в качестве входных данных для моей команды import_photo?
Возможно, я делаю это не самым эффективным способом, поэтому, пожалуйста, дайте мне знать, если вы знаете лучший способ go об этом . Обычно я хочу открыть файл, выбрать фотографию и пропустить эту фотографию с помощью моего кода обрезки.
from PIL import Image, ImageOps, ImageTk
import math
from tkinter import *
from tkinter import filedialog
import tkinter as tk
def Import_Photo():
# original = input("Please enter an input: ")
im = Image.open(original)
print(im.size)
print(type(im.size))
# (400, 225)
# <class 'tuple'>
w, h = im.size
print('width: ', w)
print('height:', h)
if w>h:
x = w - h
b = math.floor(x/2)
if w<h:
x = h - w
a = math.floor(x/2)
b = 0
def add_border(input_image, output_image, border, color=0):
img = Image.open(input_image)
if isinstance(border, int) or isinstance(border, tuple):
bimg = ImageOps.expand(img, border=border, fill=color)
else:
raise RuntimeError('Border is not an integer or tuple!')
bimg.save(output_image)
if __name__ == '__main__':
add_border(original,
output_image= 'border' + original,
border=(a,b,a,b),
color='indianred')
root = tk.Tk()
def open():
root.filename = filedialog.askopenfilename(initialdir = "/RobertsCode",title = "Select file",filetypes = (("JPG Files","*.jpg"),("PNG Files","*.png"),("all files","*.*")))
my_label = Label(root, text=root.filename).pack()
my_image = ImageTk.PhotoImage(Image.open(root.filename))
my_image_label = label(image=my_image).pack()
my_btn = Button(root, text="Open File", command=open).pack()
#tk.Button(root, text='Enter', command=Import_Photo, fg="white", bg="#263D42")
root.mainloop()