我正在尝试在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()