В настоящее время я использую:Изменение размера изображения с сохранением пропорций И создание портретных и ландшафтных изображений одинакового размера?
os.chdir(album.path)
images = glob.glob('*.*')
# thumbs size
size = 80,80
for image in images:
#create thumb
file, ext = os.path.splitext(image)
im = Image.open(os.path.join(album.path,image))
im.thumbnail(size, Image.ANTIALIAS)
thumb_path = os.path.join(album.path, 'thumbs', file + ".thumb" + ".jpeg")
im.save(thumb_path)
Хотя это работает, я в конечном итоге с различными размерами изображениями (некоторые из них портрета, а некоторые пейзажи), но я хочу, чтобы все изображения, чтобы иметь точный размер. Может быть, разумная обрезка?
UPDATE:
Я не против кадрирования небольшой части изображения. Когда я сказал, осмысленное кадрирование я имею в виду что-то вроде этого алгоритму:
if image is portrait:
make width 80px
crop the height (will be more than 80px)
else if image is landscape:
make height 80px
crop the width to 80px (will be more than 80px)
Рассмотрим чтение руководств. Метод 'thumnail' * означает *, чтобы сохранить аспект изображения. Очевидно, вы не можете иметь оба, поскольку не все изображения имеют одинаковое соотношение сторон. Рассмотрите возможность использования 'resize', если вы хотите перемасштабировать, не сохраняя соотношение. –
Он мог бы сделать их того же размера, если бы захотел сделать посадку, которая выложила бы лишнюю область с постоянным цветом. Это позволило бы 4x3 или 16x9 или любому аспектному изображению соответствовать заданному размеру 80x80 – jdi
К сожалению, нет стандартного способа определения «разумного» для обрезки. Похоже, вы хотите всегда обрезать квадрат с изображения, что означает, что вы рискуете отрезать части, которые вы действительно хотели сохранить. –