Найти - Пользователи
Полная версия: Привет. Как выполнить задание с библиотекой PIL?
Начало » Python для новичков » Привет. Как выполнить задание с библиотекой PIL?
1
Kukki
Нужно расширить класс 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”)
ЗАРАНЕЕ СПАСИБО)
py.user.next
Здесь сначала нужно понять, как это нарисовать с помощью объекта 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.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB