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!