Python draw line on image

Draw circle, rectangle, line, etc. with Python, Pillow

ImageDraw module of the Python image processing library Pillow (PIL) provides many methods for drawing figures, such as circles, squares, and straight lines.

This article describes the following contents.

  • Flow of drawing figures
  • Drawing method
    • Common parameters
    • Method example

    See the following article for the installation and basic usage of Pillow (PIL).

    Flow of drawing figures

    Create Draw Object

    Prepare an Image object of a background image (image for drawing a figure) and use it to create a Draw object. Don’t forget to import Image and ImageDraw .

    from PIL import Image, ImageDraw im = Image.new('RGB', (500, 300), (128, 128, 128)) draw = ImageDraw.Draw(im) 

    Here, create a solid image with Image.new() . The mode, size, and fill color are specified in parameters.

    Draw a shape with the drawing method

    Call the drawing method from the Draw object to draw a figure.

    Draw an ellipse, a rectangle, and a straight line as an example. The parameters will be described later.

    draw.ellipse((100, 100, 150, 200), fill=(255, 0, 0), outline=(0, 0, 0)) draw.rectangle((200, 100, 300, 200), fill=(0, 192, 192), outline=(255, 255, 255)) draw.line((350, 200, 450, 100), fill=(255, 255, 0), width=10) im.save('data/dst/pillow_imagedraw.jpg', quality=95) 

    Pillow ImageDraw

    Drawing method

    Common parameters

    The following parameters are commonly used in many methods.

    xy

    Set a rectangular area to draw a figure.

    Specify in one of the following formats:

    • (((Upper left x coordinate, upper left y coordinate), (lower right x coordinate, lower right y coordinate))
    • (Upper left x coordinate, upper left y coordinate, lower right x coordinate, lower right y coordinate)

    In line() , polygon() , and point() , multiple coordinates are specified instead of two points representing a rectangular area.

    line() draws a straight line connecting each point, polygon() draws a polygon where each point is connected, and point() draws a point of 1 pixel at each point.

    fill

    Set the color to fill the shape.

    The specification format differs depending on the mode of the image ( Image object).

    • RGB : Set each color value (0-255) in the form of (R, G, B)
    • L (Grayscale): Set a value (0-255) as an integer

    The default is None (no fill).

    outline

    Set the border color of the figure.

    The specification format of color is the same as fill above. The default is None (no border).

    As of version 4.4.0 , there is no option to set the line width (line thickness) other than line() .

    Method example

    Ellipse, rectangle

    ellipse() draws an ellipse tangent to the rectangular area specified by the argument xy . If you specify a square, a true circle is drawn.

    The output results are as shown in the above example.

    Line, polygon, point

    • Line: line(xy, fill, width)
      • xy
        • Set multiple coordinates of two or more points as ((x1, y1), (x2, y2), (x3, y3). ) .
        • Lines connecting each point are drawn.
        • Note that if you make the line width thicker with width , specifying 3 points or more with xy will make the connection look unattractive.
        • xy
          • Set multiple coordinates of three or more points as ((x1, y1), (x2, y2), (x3, y3). ) .
          • A polygon in which each point is connected is drawn.
          • xy
            • Set multiple coordinates of one or more points as ((x1, y1), (x2, y2), (x3, y3). ) .
            • One pixel point is drawn for each point.

            The example of lines ( line() ), polygon ( polygon() ), point ( point() ) is as follows. Since the point is 1 pixel, it is hard to see, but it is drawn on the right side.

            im = Image.new('RGB', (500, 250), (128, 128, 128)) draw = ImageDraw.Draw(im) draw.line(((30, 200), (130, 100), (80, 50)), fill=(255, 255, 0)) draw.line(((80, 200), (180, 100), (130, 50)), fill=(255, 255, 0), width=10) draw.polygon(((200, 200), (300, 100), (250, 50)), fill=(255, 255, 0), outline=(0, 0, 0)) draw.point(((350, 200), (450, 100), (400, 50)), fill=(255, 255, 0)) 

            Pillow ImageDraw

            Arc, chord, pie

            An arc, a chord (bow), and a pie touching the rectangular area specified by the argument xy are drawn.

            • Arc: arc(xy, start, end, fill)
              • start , end
                • Set the angle of the arc in degrees.
                • 0 degrees is the direction of 3 o’clock. clockwise.
                • The start and end points of the arc are connected by a straight line.
                • The start and end points of the arc are connected by a straight line to the center of the circle.

                Example of arc ( arc() ), chord ( chord() ), pie ( pieslice() ) is as follows.

                im = Image.new('RGB', (600, 250), (128, 128, 128)) draw = ImageDraw.Draw(im) draw.arc((25, 50, 175, 200), start=30, end=270, fill=(255, 255, 0)) draw.chord((225, 50, 375, 200), start=30, end=270, fill=(255, 255, 0), outline=(0, 0, 0)) draw.pieslice((425, 50, 575, 200), start=30, end=270, fill=(255, 255, 0), outline=(0, 0, 0)) 

                Pillow ImageDraw

                Draw on the existing image

                In the previous examples, figures are drawn on the solid image generated by Image.new() . If an existing image file is read by Image.open() , it can be drawn on it.

                im = Image.open('data/src/lena.jpg') draw = ImageDraw.Draw(im) draw.pieslice((15, 50, 140, 175), start=30, end=330, fill=(255, 255, 0)) 

                Источник

                Рисуем геометрические фигуры в Python с помощью Pillow

                Рисуем в Pillow Python

                Модуль ImageDraw из библиотеки обработки изображений Pillow (PIL) предоставляет методы для рисования круга, квадрата и прямой линии в Python.

                Создание объекта Draw в Python

                Используя объекта Image мы создадим фоновое изображение на которой мы будем рисовать наши фигуры при помощи объекта Draw . Не забудьте импортировать модуль Image и ImageDraw в начале кода.

                Здесь создается пустое изображение с размером 500 на 300 пикселей и с тёмно желтым фоном.

                Создание картинки в Pillow

                Рисуем фигуры в Pillow: ellipse, rectangle и line

                Вызываем методы рисования из объекта Draw для рисования фигур на нашем желтом фоне.

                Рисуем эллипс, прямоугольник и прямую линию в качестве примера.

                Рисуем фигуры в Python

                Справочник по параметрам методов рисования

                Даже если, способы рисования отличаются в зависимости от используемого метода, следующие параметры являются общими для всех.

                Область рисования — xy

                Параметр xy указывает прямоугольную область для рисования новой фигуры.

                Уточняется один из следующих форматов:

                • (((Верхняя левая x координата, Верхняя левая y координата), (нижняя правая x координата, нижняя правая y координата)) ;
                • (Верхняя левая x координата, Верхняя левая y координата, нижняя правая x координата, нижняя правая y координата) .

                В методах line() , polygon() и point() используются многочисленные координаты вместо двух точек, представляющих прямоугольную область.

                Метод line() рисует прямую линию, которая связывает каждую точку, polygon() рисует многоугольник, а метод point() рисует точку в 1 пиксель для каждой указанной точки.

                Параметр fill — заполняем фигуру определенным цветом

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

                Спецификация формата цвета отличается в зависимости от указанного режима изображения (объект Image ):

                • RGB : Указывает значение цвета в форме (R, G, B) ;
                • L (Черно-белое): Указывает значение (0-255) как целое число).

                Значение по умолчанию None (не заполнено).

                Есть три способа указать цвет, возьмем красный цвет, его можно записать так:

                • текстовый формат: red;
                • CSS формат (Шестнадцатеричный): #FF0000
                • RGB: (255, 0, 0)

                Стоит учесть тот факт, что текстовый формат не имеет все цвета, кол-во доступных цветов ограничено в коде самой библиотеки. Вот весь список: https://github.com/python-pillow/Pillow/blob/8.1.0/src/PIL/ImageColor.py#L148

                Лучше всего использовать шестнадцатеричный формат #FFFFFF (белый).

                Параметр outline — цвет границ

                Параметр outline указывает на цвет границы фигуры.

                Спецификация формата цвета такая же, как и у параметра fill которого мы обсуждали выше. Значение по умолчанию равно None (без границ).

                Параметр width — размер границ

                Вне зависимости от рисуемой фигуры, вы можете указать размер в пикселях для границы фигуры.

                Рисование эллипса и прямоугольника в Python

                Метод ellipse() рисует эллипс, область рисования указывается в параметр xy . Если мы зададим четыре координата которые будут соответствовать квадрату, то у нас получится ровный круг.

                Нарисуем небольшой смайл используя круги.

                Источник

                Читайте также:  Import java util concurrent
Оцените статью