在Python中裁剪时如何保持图像对齐?

Eri*_*vee 5 html css python user-experience image

我正在尝试在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])
Run Code Online (Sandbox Code Playgroud)

我希望调整大小的图像完全是47x62 - 应该没有可见的空白区域.

Vik*_*kez 1

您应该首先检查是否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()
Run Code Online (Sandbox Code Playgroud)