Доброго времени суток, читатели, зрители моего канала programmer's notes. Не забывайте подписываться и писать свои комментарии к моим статьям и видео.
Справочные материалы по объекту ImageDraw библиотеки pillow (PIL)
Это ещё один справочник по библиотеке pillow. На это раз речь пойдёт об объекте ImageDraw, предоставляющий набор графических примитивов.
Атрибуты ImageDraw
- ImageDraw.fill — следует ли использовать ImageDraw.ink по умолчанию.
- ImageDraw.font — текущий шрифт по умолчанию.
- ImageDraw.fontmode — текущий режим рисования шрифтом.
- ImageDraw.ink — внутреннее представление текущего цвета.
Значения атрибутов
#!/usr/bin/python3
from PIL import Image, ImageDraw
new_image = Image.new("RGB", (100, 200), (0, 0, 0))
imd = ImageDraw.Draw(new_image)
print(imd.fill)
print(imd.font)
print(imd.fontmode)
print(imd.ink)
Результат
False
None
L
-1
Методы ImageDraw
- ImageDraw.getfont() — получить текущий шрифт.
- ImageDraw.arc(xy, start, end, fill=None, width=0) — метод рисует дугу. xy - список, две точки для определения ограничивающей рамки. start - начальный угол в градусах. end - конечный угол в градусах. fill - цвет линии. width - толщина линии в градусах.
Пример рисования дуги
#!/usr/bin/python3
from PIL import Image, ImageDraw
new_image = Image.new("RGB", (400, 400), (0, 0, 0))
imd = ImageDraw.Draw(new_image)
imd.arc([0, 100, 200, 200], 180, 360, (0, 100, 100), 5)
new_image.save('im.jpg')
Цвет в программе определяется тремя компонентами: RGB. Но можно вместо кортежа использовать словесное название цвета. Например "red".
- ImageDraw.bitmap(xy, bitmap, fill=None) — рисует растровое изображение.
- ImageDraw.chord(xy, start, end, fill=None, outline=None, width=1) — делает тоже, что ImageDraw.arc(), но соединяет конечные точки дуги прямой.
- ImageDraw.ellipse(xy, fill=None, outline=None, width=1) — рисует эллипс. xy - список, две точки для определения ограничивающей рамки. fill - цвет заполнения, outline - цвет контура, width - ширина линии.
#!/usr/bin/python3
from PIL import Image, ImageDraw
new_image = Image.new("RGB", (400, 400), (0, 0, 0))
imd = ImageDraw.Draw(new_image)
imd.ellipse([50, 100, 300, 300], (0, 100, 100), (100, 0, 0), 5)
new_image.save('im.jpg')
Результат выполнения программы см. рисунок 1.
- ImageDraw.line(xy, fill=None, width=0, joint=None) — рисует линию между заданными точками (xy), если точек более 2, то рисуется ломанная линия. fill - цвет линии. width - ширина линии. joint - тип соединения между линиями, если ломанная, 'curve' - закругление.
- ImageDraw.pieslice(xy, start, end, fill=None, outline=None, width=1) — похож на ImageDraw.chord(), но может соединять конечные точки дуги ломанной линией.
Пример программы
#!/usr/bin/python3
from PIL import Image, ImageDraw
new_image = Image.new("RGB", (400, 400), (0, 0, 0))
imd = ImageDraw.Draw(new_image)
imd.pieslice((225, 50, 375, 200), 30, 270, (255, 255, 0),(0, 0, 255))
new_image.save('im.jpg')
Результат см. рисунок 2
- ImageDraw.point(xy, fill=None) — рисует точку заданного цвете.
- ImageDraw.polygon(xy, fill=None, outline=None, width=1) — рисование многоугольника с заливкой.
- ImageDraw.regular_polygon(bounding_circle, n_sides, rotation=0, fill=None, outline=None) — рисует правильный многоугольник, вписанный в окружность. bounding_circle - ограничивающая окружность, задаваемая центром и радиусом (x, y, r), n_sides - количество сторон, rotation - угол поворота прямоугольника, fill - цвет заливки, outline - цвет контура.
Пример программы
#!/usr/bin/python3
from PIL import Image, ImageDraw
new_image = Image.new("RGB", (400, 400), (0, 0, 0))
imd = ImageDraw.Draw(new_image)
imd.regular_polygon((200, 200, 100), 7, 0, (50, 50, 200), (255, 255, 20))
new_image.save('im.jpg')
Результат работы программы см. рисунок 3
- ImageDraw.rectangle(xy, fill=None, outline=None, width=1) — рисует прямоугольник.
- ImageDraw.rounded_rectangle(xy, radius=0, fill=None, outline=None, width=1) — прямоугольник с закруглёнными углами.
Наш справочник по ImageDraw ещё не закончился. Отдельно будет статья по работе с текстом и шрифтами.
Ну, пока всё!
Пишите свои предложения и замечания и занимайтесь программированием, а также проектированием баз данных, хотя бы для поддержания уровня интеллекта.