枕头裁剪图像保持最大宽度和最大高度的比例

Pillow crop images keeping the ratio having a max width and max height

我需要使用 Pillow 裁剪一些东西,保持比例,max_height 或 max_width。

有些图片可以有更大的宽度或更大的高度。

我试过:

        image_clone = image.copy()
        width_percent = (size['width'] / float(image_clone.size[0]))
        height = int((float(image_clone.size[1]) * float(width_percent)))
        image_clone.thumbnail((size['width'], height), Image.LANCZOS)

不适用于宽度较大的图像,因为高度会很小,图像不太明显。

我不清楚。我之前看过这段代码来缩小图像以使其适合一个盒子。条件是选择较大的,因为它适用于纵向和横向以及正方形尺寸:

    image_clone = image.copy()
    width_percent = (size['width'] / float(image_clone.size[0]))
    height_percent = (size['height'] / float(image_clone.size[1]))
    if width_percent > height_percent:
        height = int((float(image_clone.size[1]) * float(width_percent)))
        image_clone.thumbnail((size['width'], height), Image.LANCZOS)
    else:
        width = int((float(image_clone.size[0]) * float(height_percent)))
        image_clone.thumbnail((width, size['height']), Image.LANCZOS)

未测试。