Top.Mail.Ru

Python. Работа с изображениями

Для работы с графическими изображениями в Python есть ряд библиотек, в частности, библиотека Pyllow. Если у вас уже установлен pip то поставить Pillow не составит труда, просто используем команду python -m pip install pillow, которая автоматически скачает и установит библиотеку. Для использования библиотек просто подключаем ее через  импорт:

from PIL import Image

Самым важным классом в этой библиотеке — Image. Вот простейший пример использования, грузим картинку и отображаем ее на экране:

from PIL import Image
img=Image.open('d:\\3\\10300013.png')
img.show()

Отобразит Python картинку, правда, стандартными средствами операционной системы, просто показав окно с картинкой.

А теперь чуть более сложный пример. Пусть у нас есть два изображения, такое:

И такое:

Объединим их, используя интерполяцию между новым и старым:

from PIL import Image
im1 = Image.open('d:\\3\\10300013.png')
im2 = Image.open('d:\\3\\10300014.png')
Image.blend(im1, im2, 50).show()

Получив вот такой вот результат:

Третий параметр — это альфа. Попробуем поиграться с ним, задами, например 5:

Или вообще 2:

Возможно, на данном примере не совсем понятно. Хорошо, попробуем изображения попроще. Вот у нас две картинки:

Наложим их друг на друга методом blend с альфой 2:

Поменяем местами:

Библиотека позволяет также формировать изображения и сохранять их в файл:

from PIL import Image
from PIL import ImageDraw

text = "This is text"
color = (0, 0, 120)
img = Image.new('RGB', (100, 50), color)
imgDrawer = ImageDraw.Draw(img)
imgDrawer.text((10, 20), text)
img.save("d:\\1\\pil-example.png")

Вот что сделает данный код:

Только на этот раз изображение будет не на экран выведено, а в файл по указанному пути.

Выведем формат, тип, размер изображения:

from PIL import Image
from PIL import ImageDraw

img = Image.open('d:\\3\\lena.jpg') #открываем картинку
size = img.size #размер картинки
format = img.format #формат картинки
mode = img.mode #мод(RGBA...)
arr = [] #создаем пустой массив 
arr.append(size)  #добавляем размер в массив
arr.append(format) #добавляем формат в массив
arr.append(mode)  #добавляем мод в массив
print(arr) #выводим массив

Любопытно, что можно конвертировать изображение из одного формата в другой, для этого достаточно открыть его и сохранить в нужном формате. Формат определяет расширение:

from PIL import Image
from PIL import ImageDraw

img = Image.open('d:\\3\\lena.jpg') #открываем картинку
img.save('d:\\3\\test.gif')

Возможны и геометрические преобразования изображений, например, поворот на угол:

from PIL import Image
from PIL import ImageDraw

img = Image.open('d:\\3\\lena.jpg') #открываем картинку
out = img.resize((128, 128))
out = img.rotate(25) # degrees counter-clockwise
out.show()

Результатом работы данной программы будет повернутое изображение:

На этом пока все, но продолжение следует.

Comments

So empty here ... leave a comment!

Добавить комментарий

Sidebar