Вращающееся изображение с помощью ImageTk(PIL) обрезается

#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. Если вы этого хотите, но обязательно установите одинаковую ширину и высоту