Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 22, 2019 16:02:34

Kukki
Зарегистрирован: 2019-04-22
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Привет. Как выполнить задание с библиотекой PIL?

Нужно расширить класс PIL.ImageDraw.ImageDraw и создать его наследника ImageDrawer.
От нового класса требуется реализовать два новых метода: circle(center, radius, fill, outline, width) и square(xy, side, fill, outline, width).
Метод circle предназначен для отрисовки окружности с заданным центром (параметр center в форме кортежа из двух чисел) и радиусом (параметр radius в виде одного числа).
Метод square предназначен для отрисовки квадрата с заданным верхним левым углом (параметр xy в форме кортежа из двух чисел) и стороной (параметр side в виде одного числа).
Параметры fill (цвет заливки), outline (цвет границы), width (толщина границы) у обоих методов являются необязательными. Задайте им значение по умолчанию «в духе» PIL.ImageDraw.ImageDraw.
Решение должно содержать только требуемый класс, ничего вызывать не надо.
ПРИМЕЧАНИЕ:
В примерах в качестве ввода представлены параметры будущего изображения:
• size — размер будущей картинки;
• background — цвет фона;
• circles — список, содержащий параметры каждой окружности, которую требуется отрисовать;
• square — список, содержащий параметры каждого квадрата, который требуется отрисовать.
ПРИМЕР 1,1:
Ввод:
{ ‘background’: ‘white’,
‘circles’: [ { ‘center’: (50, 50),
‘outline’: ‘blue’,
‘radius’: 20,
‘width’: 3},
{ ‘center’: (92, 50),
‘outline’: ‘black’,
‘radius’: 20,
‘width’: 3},
{ ‘center’: (134, 50),
‘outline’: ‘red’,
‘radius’: 20,
‘width’: 3},
{ ‘center’: (71, 70),
‘outline’: ‘yellow’,
‘radius’: 20,
‘width’: 3},
{ ‘center’: (113, 70),
‘outline’: ‘green’,
‘radius’: 20,
‘width’: 3}],
‘size’: (184, 120)}
(вывод картинкой в документе с именем “Пример 1,1”)
ПРИМЕР 1,1:
Ввод:
{ ‘size’: (150, 50),
‘squares’: [ {'fill': ‘red’, ‘side’: 50, ‘xy’: (0, 0)},
{'fill': ‘green’, ‘side’: 50, ‘xy’: (50, 0)},
{'fill': ‘blue’, ‘side’: 50, ‘xy’: (100, 0)}]}

(вывод картинкой в документе с именем “Пример 1,2”)
ЗАРАНЕЕ СПАСИБО)

Прикреплённый файлы:
attachment ПРИМЕРЫ.png (8,5 KБ)

Офлайн

#2 Апрель 23, 2019 06:27:48

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10024
Репутация: +  857  -
Профиль   Отправить e-mail  

Привет. Как выполнить задание с библиотекой PIL?

Здесь сначала нужно понять, как это нарисовать с помощью объекта PIL.ImageDraw.ImageDraw(), а потом уже, наследуясь от этого класса, использовать внутри новых методов его методы.

Вот инфа, как использовать методы объекта
https://pillow.readthedocs.io/en/3.0.x/reference/ImageDraw.html#PIL.ImageDraw.PIL.ImageDraw.Draw.ellipse
Для окружности используется метод ellipse(), так как окружность - это частный случай эллипса, как квадрат - частный случай параллелограмма.

 PIL.ImageDraw.Draw.ellipse(xy, fill=None, outline=None)

Draws an ellipse inside the given bounding box.

Parameters:

xy – Four points to define the bounding box. Sequence of either [(x0, y0), (x1, y1)] or [x0, y0, x1, y1].
outline – Color to use for the outline.
fill – Color to use for the fill.



Отредактировано py.user.next (Апрель 23, 2019 06:30:38)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version