Для начала установим PIL. Обратите внимание, что PIL, больше не поддерживается, вместо него сейчас можно найти «дружеское ответвление» Pillow. Чтобы установить PIL на Debian, выполните следующую команду в терминале от root’a:
aptitude install python-imaging
Я использовал PIL для строгово изменения размера изображения 64х64 для аватаров пользователей.
from PIL import Image
img = Image.open('image.png')
width = 64
height = 64
resized_img = img.resize((width, height), Image.ANTIALIAS)
resized_img.save(image.png)
Вот так очень просто мы поменяли размер изображения на 64×64.
Так же мне в дальнейшем мне понадобилось изменять размер изображения с сохранение пропорций. И тут также мне на помощь пришел PIL.
Код для изменения размера изображения с сохранением пропорций:
from PIL import Image
width = 750
img = Image.open('image.jpg')
ratio = (basewidth / float(img.size[0]))
height = int((float(img.size[1]) * float(ratio)))
img = img.resize((basewidth, height), PIL.Image.ANTIALIAS)
img.save('resized_image.jpg')
Вот так с помощью PIL мы в несколько строк изменили размер изображения (image.jpg) до ширины в 750 пикселей. Данную ширину мы установили в переменной width. Высота, пропорциональная ширине вычисляется путем определения, соотношения оригинальной ширины изображения (img.size [0]) к величине указанной в переменной width (в нашем случае 300px), а затем умножением этой величины на исходную высоту изображения (img.size [1]). Полученное значение высоты хранится в переменной height.
Итак управляя переменной width, можно получать любые другие размеры итогового изображения. Так же обратите внимание, что я сохранил исходное изображение по именем resized_image.jpg, в случае необходимости его дальнейшего использования. В случае если исходное изображение больше не нужно — можно перезаписать полученное изображение с таким же именем.
Чтобы оставить высоту изображения фиксированной и пропорционально изменять ее ширину, немного изменим код.
height = 300
img = Image.open('image.jpg')
ratio = (baseheight / float(img.size[1]))
width = int((float(img.size[0]) * float(hpercent)))
img = img.resize((width, height), PIL.Image.ANTIALIAS)
img.save('resized_image.jpg')
Обратите внимание. Здесь для вычисления соотношения высоты мы обращаемся не к img.size [0], а к img.size [1]. Атрибут size является кортежем хранящим ширину в первом элементе [0] и высоту во втором [1].
Вот и все. И это далеко не все возможности PIL.
Zulip — программное обеспечение для реализации корпоративного чата. Разработан в 2012 году, в 2014 был…
Zookeeper — cервис-координатор, который позволяет обеспечить контроль синхронизации данных. Разработан на Java компанией Apache Software…
Zimbra — программное обеспечение для реализации почтового сервиса или, если сказать точнее, автоматизации совместной деятельности…
Zabbix — бесплатная система мониторинга. Позволяет отслеживать состояние сетевых узлов, компьютеров и серверов. Возможности: Поддержка…
YouTube — компания-владелец одноименного портала для просмотра и хранения видео. Чтобы пользоваться данным порталом достаточно…
Yota — провайдер, предоставляющий доступ к сети Интернет по беспроводной связи. Впервые, сервис начал работать…