DevGang
Авторизоваться

Изменение размера изображений с помощью Python 

Я люблю Python и уже давно изучаю его. Некоторое время назад я написал скрипт на Python, в котором мне нужно было изменить размер группы изображений, сохраняя при этом пропорции (пропорции) без изменений. Поэтому я осмотрелся и нашел PIL (Python Imaging Library).

Вам нужно будет установить PIL, чтобы код работал. Обратите внимание, что PIL, похоже, больше не поддерживается, хотя также доступен его форк под названием Pillow. Чтобы установить PIL в системе на основе Debian, запустите следующую команду в своем терминале от имени пользователя root:

aptitude install python-imaging

А теперь код Python для изменения размера изображений при сохранении соотношения сторон.

import PIL
from PIL import Image

basewidth = 300

img = Image.open(‘fullsized_image.jpg')

wpercent = (basewidth / float(img.size[0]))

hsize = int((float(img.size[1]) * float(wpercent)))

img = img.resize((basewidth, hsize), PIL.Image.ANTIALIAS)

img.save(‘resized_image.jpg')

Эти несколько строк кода Python изменят размер изображения ( fullsized_image.jpg ) с использованием PIL до ширины 300 пикселей, которая задается в переменной basewidth и высоте, пропорциональной новой ширине. Пропорциональная высота рассчитывается путем определения того, какой процент 300 пикселей является исходной шириной (img.size[0]), а затем умножая исходную высоту (img.size[1]) на этот процент. Полученное значение высоты сохраняется в переменной hsize.

Вы можете изменить ширину на любое другое число, если вам нужна другая ширина для ваших изображений. Также обратите внимание, что я сохранил измененное изображение под другим именем, resized_image.jpg , потому что я хотел также сохранить полноразмерное изображение ( fullsized_image.jpg ). Вы конечно можете не делать это, используя то же имя файла, чтобы перезаписать полноразмерное изображение с измененным размером, если это то, что вы хотите.

Если вы используете этот скрипт в Zope в качестве внешнего метода, вам понадобится строка from PIL import Image, чтобы избежать столкновений пространства имен с Zope Image .

Если высота фиксирована и ширина пропорционально варьируется, это почти одно и то же, вам просто нужно немного поменять местами:

baseheight = 560
img = Image.open( 'fullsized_image. jpg ') 
hpercent = (baseheight / float (img.size[1])) 
wsize = int ((float (img.size[0]) * float (hpercent))) 
img = img.resize ((wsize, baseheight), PIL.Image.ANTIALIAS) 
img.save('resized_image.jpg')

Обратите внимание, что базовая ширина теперь является базовой высотой, так как высота фиксирована. В третьей строке мы вычисляем процент высоты, поэтому нам нужен img.size[1] вместо img.size[0] . Атрибут size - это кортеж, содержащий ширину и высоту в пикселях; size [0] относится к первому элементу кортежа, который является width, а size[1] является вторым элементом, который является height. В строке 4 также есть этот переключатель между sizr[0] для ширины и size[1] для высоты.

#Python
Комментарии
Чтобы оставить комментарий, необходимо авторизоваться

Присоединяйся в тусовку

В этом месте могла бы быть ваша реклама

Разместить рекламу