2017-01-18 5 views
0

Я пытаюсь изменить размер изображения, сохраняя его соотношение сторон, так что его наименьший размер равен 500px.Изображение с минимальным размером в PIL

С помощью кода от this ответ работает, но он изменяет размер изображения на основе наибольшего размера.

Так что, если у нас есть 2000x1000 изображения и мы size= 500,500 полученное изображение будет 500x250, в то время как я желаю 1000x500. Как мне это сделать?

Очевидно, что это случайные числа.

ответ

0

Использовать max вместо min. Наблюдайте различные результаты:

>>> maxwidth = 500 
>>> maxheight = 500 
>>> width = 2000 
>>> height = 1000 
>>> i = min(maxwidth/width, maxheight/height) 
>>> a = max(maxwidth/width, maxheight/height) 
>>> width*i, height*i 
(500.0, 250.0) 
>>> width*a, height*a 
(1000.0, 500.0) 

Вы можете использовать эти значения, чтобы определить, какой размер вы должны посылать в img.thumbnail:

x,y = 500, 500 
# compute i and a above 
m.thumbnail((x*a/i, y*a/i), Image.ANTIALIAS)