Python Pillow - Módulo ImageDraw

los ‘ImageDraw’El módulo proporciona soporte de gráficos 2D simple para Image Object. Generalmente, usamos este módulo para crear nuevas imágenes, anotar o retocar imágenes existentes y generar gráficos sobre la marcha para uso web.

Los comandos de gráficos admiten el dibujo de formas y la anotación de texto.

  • Una imagen puede estar bien pensada para que sea una matriz bidimensional de píxeles (elementos de imagen). Un píxel es el punto de color más pequeño que se admite.

  • El origen del sistema de coordenadas bidimensionales utilizado por ImageDraw, está en el upper left corner de la imagen.

  • Los esquemas de color de las almohadas que usamos son RGB. El módulo proporciona la representación y el soporte del color RGB.ImageColor.

  • mapa de bits, OpenType o TrueType son las fuentes aceptables para las anotaciones de texto.

  • La mayoría de los comandos de dibujo pueden requerir un parámetro de cuadro delimitador que especifique el área de la imagen a la que se aplicará el comando.

  • Una secuencia de coordenadas se puede representar como [(x0, y0), (x1, y1),… (xn, yn)].

  • Para algunos comandos de dibujo, necesitamos valores de ángulos.

Ejemplo

El siguiente ejemplo de Python dibuja una línea a través de la imagen dada:

#Import required libraries
import sys
from PIL import Image, ImageDraw

#Create Image object
im = Image.open("images/logo.jpg")

#Draw line
draw = ImageDraw.Draw(im)
draw.line((0, 0) + im.size, fill=128)
draw.line((0, im.size[1], im.size[0], 0), fill=128)

#Show image
im.show()

Salida

Si guarda el programa anterior como Example.py y lo ejecuta, dibuja una línea a lo largo de la imagen y la muestra usando la utilidad de visualización PNG estándar, de la siguiente manera:

Lona

  • Un ImageDraw es una superficie dibujable Pillow (es decir, un lienzo) de una imagen.

  • ImageDraw.Draw (img) devuelve una representación de lienzo dibujable del parámetro Image img. El fondo del lienzo es la imagen "img".

Ejemplo

El siguiente ejemplo de Python dibuja texto en la imagen dada:

#Import required modules from Pillow package
from PIL import Image, ImageDraw, ImageFont

# get an image
base = Image.open('images/boy.jpg').convert('RGBA')

# make a blank image for the text, initialized to transparent text color
txt = Image.new('RGBA', base.size, (255,255,255,0))

# get a font
fnt = ImageFont.truetype('E:/PythonPillow/Fonts/Pacifico.ttf', 40)

# get a drawing context
d = ImageDraw.Draw(txt)

# draw text, half opacity
d.text((14,14), "Tutorials", font=fnt, fill=(255,255,255,128))

# draw text, full opacity
d.text((14,60), "Point", font=fnt, fill=(255,255,255,255))
out = Image.alpha_composite(base, txt)

#Show image
out.show()

Salida

Dibujar formas usando el módulo 'ImageDraw'

El módulo ImageDraw nos permite crear diferentes formas creando primero un objeto de dibujo con la imagen con la que desea trabajar y luego aplicándolo. Algunas de las formas comunes que podemos dibujar usando el módulo 'ImageDraw' son las siguientes:

Línea

A continuación, se muestra la sintaxis para dibujar una línea usando python pillow:

draw.line(xy, fill=None, width=0)

los line()El método dibuja una línea desde la esquina superior izquierda a la esquina inferior derecha del cuadro delimitador xy y el lienzo. La línea se rellena con relleno de color. Los valores predeterminados de Ninguno y 0, respectivamente, son para los parámetros relleno y ancho, que son opcionales.

Ejemplo

from PIL import Image, ImageDraw

img = Image.new('RGB', (500, 300), (125, 125, 125))
draw = ImageDraw.Draw(img)
draw.line((200, 100, 300, 200), fill=(0, 0, 0), width=10)

img.show()

Salida

Eclipse

A continuación, se muestra la sintaxis para dibujar una elipse usando python pillow:

draw.ellipse(xy, fill=None, outline=None)

los ellipse()El método dibuja la elipse rodeada por un cuadro delimitador xy al dibujar. La forma se rellena con relleno de color y el perímetro en contorno de color. Los valores predeterminados de Ninguno son para los parámetros relleno y ancho, que son opcionales.

Ejemplo

from PIL import Image, ImageDraw

img = Image.new('RGB', (500, 300), (125, 125, 125))
draw = ImageDraw.Draw(img)

draw.ellipse((200, 125, 300, 200), fill=(255, 0, 0), outline=(0, 0, 0))
img.show()

Salida

Rectángulo

A continuación, se muestra la sintaxis para dibujar un rectángulo usando la almohada de Python:

draw.rectangle(xy, fill=None, outline=None)

los rectangle()El método dibuja el rectángulo dado el cuadro delimitador xy en el dibujo. La forma se rellena con relleno de color y el perímetro en contorno de color. Los valores predeterminados de Ninguno son para los parámetros relleno y ancho, que son opcionales.

from PIL import Image, ImageDraw

img = Image.new('RGB', (500, 300), (125, 125, 125))
draw = ImageDraw.Draw(img)

draw.rectangle(
   (200, 125, 300, 200),
   fill=(255, 0, 0),
   outline=(0, 0, 0))
img.show()

Salida

Polígono

A continuación, se muestra la sintaxis para dibujar un rectángulo usando la almohada de Python:

draw.polygon(seq, fill=None, outline=None)

los polygon()El método dibuja un polígono que conecta con líneas rectas las ubicaciones de la secuencia de coordenadas en la secuencia de dibujo. Las primeras y últimas coordenadas de la secuencia también están conectadas por una línea recta. La forma se rellena con relleno de color y el perímetro en contorno de color. Los parámetros de relleno y contorno son opcionales con valores predeterminados Ninguno.

from PIL import Image, ImageDraw

img = Image.new('RGB', (500, 300), (125, 125, 125))
draw = ImageDraw.Draw(img)

draw.polygon(
   ((200, 200), (300, 100), (250, 50)),
   fill=(255, 0, 0),
   outline=(0, 0, 0))
img.show()

Salida