Travesseiro Python - Módulo ImageDraw

o ‘ImageDraw’módulo fornece suporte gráfico 2D simples para objeto de imagem. Geralmente, usamos este módulo para criar novas imagens, fazer anotações ou retocar imagens existentes e para gerar gráficos dinâmicos para uso na web.

Os comandos gráficos suportam o desenho de formas e anotações de texto.

  • Uma imagem pode ser bem pensada para ser uma matriz bidimensional de pixels (elementos de imagem). Um pixel é o menor ponto de cor suportado.

  • A origem do sistema de coordenadas bidimensional usado por ImageDraw, está no upper left corner da imagem.

  • O esquema de cores do travesseiro que usamos é RGB. A representação e suporte RGB de cores são fornecidos pelo móduloImageColor.

  • bitmap, OpenType ou TrueType são as fontes aceitáveis ​​para anotações de texto.

  • A maioria dos comandos de desenho pode exigir um parâmetro de caixa delimitadora que especifica a área da imagem à qual o comando deve ser aplicado.

  • Uma sequência de coordenadas pode ser representada como [(x0, y0), (x1, y1),… (xn, yn)].

  • Para alguns comandos de desenho, exigimos valores de ângulo.

Exemplo

O exemplo de python a seguir desenha uma linha na imagem fornecida -

#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()

Resultado

Se você salvar o programa acima como Example.py e executar, ele desenha uma linha na imagem e a exibe usando o utilitário de exibição PNG padrão, como segue -

Tela de pintura

  • Um ImageDraw é uma superfície drawable Pillow (ou seja, uma tela) de uma imagem.

  • ImageDraw.Draw (img) retorna uma representação de tela drawable do parâmetro Image img. O fundo da tela é a imagem "img".

Exemplo

O exemplo de python a seguir desenha texto na imagem fornecida -

#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()

Resultado

Desenhar formas usando o módulo 'ImageDraw'

O módulo ImageDraw nos permite criar diferentes formas criando primeiro um objeto de desenho com a imagem com a qual deseja trabalhar e depois aplicando-o. Algumas das formas comuns que podemos desenhar usando o módulo 'ImageDraw' são as seguintes -

Linha

A seguir, a sintaxe para desenhar uma linha usando o travesseiro python -

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

o line()método desenha uma linha do canto superior esquerdo ao canto inferior direito da caixa delimitadora xy e da tela. A linha é preenchida com preenchimento de cor. Os valores padrão de Nenhum e 0, respectivamente, são para os parâmetros preenchimento e largura, que são opcionais.

Exemplo

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()

Resultado

Eclipse

A seguir, a sintaxe para desenhar uma elipse usando o travesseiro python -

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

o ellipse()método desenha a elipse cercada pela caixa delimitadora xy no desenho. A forma é preenchida usando preenchimento de cor e o perímetro em contorno de cor. Os valores padrão de Nenhum são para os parâmetros preenchimento e largura, que são opcionais.

Exemplo

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()

Resultado

Retângulo

A seguir, a sintaxe para desenhar um retângulo usando o travesseiro python -

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

o rectangle()método desenha o retângulo dado a caixa delimitadora xy no desenho. A forma é preenchida usando preenchimento de cor e o perímetro em contorno de cor. Os valores padrão de Nenhum são para os parâmetros preenchimento e largura, que são opcionais.

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()

Resultado

Polígono

A seguir, a sintaxe para desenhar um retângulo usando o travesseiro python -

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

o polygon()O método desenha um polígono conectando com linhas retas os locais da sequência de coordenadas seq no desenho. A primeira e a última coordenadas em seq também são conectadas por uma linha reta. A forma é preenchida usando preenchimento de cor e o perímetro em contorno de cor. Os parâmetros de preenchimento e contorno são opcionais com valores padrão Nenhum.

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()

Resultado