Как стать автором
Обновить

Простейшее рисование с помощью PIL

Время на прочтение2 мин
Количество просмотров60K
Недавно потребовалось мне создавать картинку на лету. Решил спользовать библиотеку для питона PIL. Она поддерживает кучу форматов, а также множество цветовых систем (RGB, RGBA и более простые). Итак, рассмотрим простейшее, как создать рисунок и что-либо на нем нарисовать.


Для начала, подключим нужные модули.
from PIL import Image, ImageDraw

Модуль Image управляет непосредственно источником изображения, позволяет создавать, сохранять, октрывать рисунок. А ImageDraw, отвечает непосредственно за рисование геометрических объектов.

Теперь создадим новый рисунок:

image = Image.new("RGBA", (320,320), (0,0,0,0))

Здесь, первый параметр это тип картинки, может быть: 1 (черно-белый), L (монохромный, оттенки серого), RGB, RGBA (RGB с альфа каналом), CMYK, YCbCr, I (32 bit Integer pixels), F (32 bit Float pixels).

Второй параметр, это объект типа tuple задающий размер изображения.

Третий параметр, это непосредственно цвет, т.к. у нас RGBA, то запись (0,0,0,0) соответствует полной прозрачности.

После этого, чтобы нарисовать на нем что-либо, требуется создать объект ImageDraw и передать ему наш рисунок:

draw = ImageDraw.Draw(image)

Попробуем нарисовать красный эллипс:

draw. ellipse((10,10,300,300), fill="red", outline="red")

Здесь мы рисуем эллипс, с начальными координатами: 10,10, и конечными: 300,300. Также, параметр fill задает цвет заливки, а outline — цвет контура. Помимо кодовых названий, можно использовать HTML запись, либо RGB(A) в виде tuple элемента.

Из доступных для рисования фигур доступны: кривая, линия, текст, вырезаный эллипс, точка, полигон.

После этого удалим draw и сохраним рисунок:

del draw
image.save("/path/to/save/test.png", "PNG")


После этого мы получи .png файл, в котором будет красный круг на прозрачном фоне:
image

Вот, думаю для начального понимания поможет кому-нибудь.

Нашел краткую документацию по официальной документации. (залил на свой сайт)

Официальный сайт с документацией
Теги:
Хабы:
Всего голосов 58: ↑50 и ↓8+42
Комментарии24

Публикации

Истории

Работа

Data Scientist
75 вакансий
Python разработчик
128 вакансий

Ближайшие события

27 августа – 7 октября
Премия digital-кейсов «Проксима»
МоскваОнлайн
11 сентября
Митап по BigData от Честного ЗНАКа
Санкт-ПетербургОнлайн
14 сентября
Конференция Practical ML Conf
МоскваОнлайн
19 сентября
CDI Conf 2024
Москва
20 – 22 сентября
BCI Hack Moscow
Москва
24 сентября
Конференция Fin.Bot 2024
МоскваОнлайн
25 сентября
Конференция Yandex Scale 2024
МоскваОнлайн
28 – 29 сентября
Конференция E-CODE
МоскваОнлайн
28 сентября – 5 октября
О! Хакатон
Онлайн
30 сентября – 1 октября
Конференция фронтенд-разработчиков FrontendConf 2024
МоскваОнлайн