我正在尝试在Python中裁剪图像并调整其大小,我希望它们采用固定格式
之后(47x62像素)。但是,如果原始图像位于风景中,则我的算法无效,其中存在空白区域。

import Image, sys

MAXSIZEX = 47
MAXSIZEY = 62

im = Image.open(sys.argv[1])
(width, height) = im.size

ratio = 1. * MAXSIZEX / MAXSIZEY

im = im.crop((0, 0, int(width*ratio), int(height*ratio)))
im = im.resize((MAXSIZEX, MAXSIZEY), Image.ANTIALIAS)

im.save(sys.argv[2])

我希望调整后的图像完全为47x62-应该没有可见的空白区域。

最佳答案

您应该首先检查MAXSIZEX是否大于宽度,或者MAXSIZEY是否大于高度。如果它们首先重新缩放图像,然后进行裁剪:

MAXSIZEX = 64
MAXSIZEY = 42
width, height = im.size

xrat = width / float(MAXSIZEX)
yrat = height / float(MAXSIZEY)

if xrat < 1 or yrat < 1:
    rat = min(xrat, yrat)
    im = im.resize((int(width / rat), int(height / rat)))
res = im.crop((0, 0, MAXSIZEX, MAXSIZEY))
res.show()

09-26 03:31