Найти в Дзене
programmer's notes (python and more)

Программирование на языке Python. Библиотека pillow. Справочник по объекту ImageDraw

Оглавление

Доброго времени суток, читатели, зрители моего канала 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.

Рисунок 1. Эллипс, см. программу выше
Рисунок 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

Рисунок 2. См. программу выше
Рисунок 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

Рисунок 3. Правильный многоугольник, см. программу выше
Рисунок 3. Правильный многоугольник, см. программу выше

Наш справочник по ImageDraw ещё не закончился. Отдельно будет статья по работе с текстом и шрифтами.

Ну, пока всё!

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

- Ваша программа ничего не рисует на экране. - Она рисует, но цветом фона.
- Ваша программа ничего не рисует на экране. - Она рисует, но цветом фона.