#python #python-3.x #tkinter
Вопрос:
Я загружаю изображение с помощью этих двух функций:
# Function that browse image
def browse_image():
global image_object, image_loaded_label
root.filename = filedialog.askopenfilename(initialdir="/", title="Select An Image",
filetypes=(("jpeg files", "*.jpeg"),("png files", "*.png")))
openimage(root.filename)
listbox.delete(0, 'end')
# Function that opens image loaded
def openimage(uri):
global image_object
image = Image.open(uri)
image_object = image.resize((450, 350), Image.ANTIALIAS)
image_loaded = ImageTk.PhotoImage(image_object)
img_lbl.configure(image=image_loaded)
img_lbl.image = image_loaded
затем я поворачиваю изображение:
# Rotating image left and right
def rotate_image(direction):
global image_object
angle = {"left": 90, "right": -90}[direction]
image_object = image_object.rotate(angle)
rotated_tk = ImageTk.PhotoImage(image_object)
img_lbl.config(image=rotated_tk)
img_lbl.image = rotated_tk
Но после поворота он обрезается, и я не могу понять, почему, я что-то делаю не так? Я помещаю фотографии, чтобы показать, как они обрезаются
Есть ли способ не обрезать его или обрезать при загрузке?
Ответ №1:
Я думаю, что у изображения разные свойства ширины и высоты. Так что это должно быть причиной, по которой изображение обрезается.
Таким образом, изображение должно быть «идеальным» квадратом.
Комментарии:
1. Вы имеете в виду, что я не должен изменять его размер с помощью image.resize((450, 350)?
2. Если вы этого хотите, но обязательно установите одинаковую ширину и высоту