Недавно потребовалось мне создавать картинку на лету. Решил спользовать библиотеку для питона 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 файл, в котором будет красный круг на прозрачном фоне :
Вот, думаю для начального понимания поможет кому-нибудь.
Нашел краткую документацию по официальной документации.
Официальный сайт с документацией