На этом шаге мы рассмотрим особенности использования этой библиотеки.
Чтобы увидеть разницу между Pillow и Wand, нарисуем два круга - сначала средствами первой библиотеки, потом средствами второй.
>>> # Рисуем эллипс средствами Pillow >>> from PIL import Image, ImageDraw >>> img = Image.new ("RGB", (300, 300), (255, 255, 255)) >>> draw = ImageDraw.Draw (img) >>> draw.ellipse((0, 0, 150, 150), fill="white", outline="red") >>> img.show()
Результат построения приведен на рисунке 1.
Рис.1. Построение средствами Pillow
>>> # Рисуем эллипс средствами ImageMagick и Wand >>> # Импортируем класс Image из модуля wand.image под именем >>> # WandImage, чтобы избежать конфликта имен с одноименным классом >>> # из модуля PIL >>> from wand.image import Image as WandImage >>> from wand.color import Color >>> from wand.drawing import Drawing >>> from wand.display import display >>> img = WandImage(width = 300, height = 300, background = Color("white")) >>> draw = Drawing() >>> draw.stroke_color = Color ("red") >>> draw.fill_color = Color ("white") >>> draw.ellipse ( (150, 150), (150, 150)) >>> draw.draw (img) >>> display (img)
Результат построения приведен на рисунке 2.
Рис.1. Построение средствами Wand
Методика создания первого круга (с помощью Pillow) должна быть уже нам знакома - в отличие от методики рисования второго круга, когда мы задействовали средства wand.
Итак, сначала мы создаем объект класса image, определенный в модуле wand.image и представляющий рисуемое изображение. Конструктор этого класса в нашем случае имеет следующий формат вызова:
Image (width = <Ширина>, height = <Высота>[, background = <Цвет фона>] )
>>> from wand.image import Image as WandImage >>> from wand.color import Color >>> img = WandImage(width = 400, height = 300, background = Color("black")) >>> img <wand.image.Image: e1038a4 '' (400x300)>
Цвет в wand задается в виде объекта класса Color, определенного в модуле wand.color. Конструктор этого класса в качестве параметра принимает строку с описанием цвета, которое может быть задано любым из знакомых нам способов. Примеры:
>>> from wand.color import Color >>> Color ("white") # Белый цвет wand.color.Color('srgb(255,255,255)') >>> Color ("#FF0000") # Красный цвет wand.color.Color('srgb(255,0,0)') >>> Color("rgb(0, 255, 0)") # Зеленьй цвет wand.color.Color('srgb(0,255,0)')
Рисованием на изображении заведует определенный в модуле wand.drawing класс Drawing. Создадим его, вызвав конструктор без параметров:
>>> from wand.drawing import Drawing >>> draw = wand.drawing.Drawing () >>> draw <wand.drawing.Drawing object at 0x02888FF0>
На следующем шаге мы рассмотрим задание параметров рисуемых фигур.