Python Pillow ImageDraw模块

Python Pillow ImageDraw模块

图片绘图模块 ‘ImageDraw’ 提供了对Image对象的简单2D图形支持。通常,我们使用该模块创建新的图像,为现有图像添加注释或修饰,并生成用于网络的动态图形。

图形命令支持绘制形状和文本注释。

  • 可以将图像视为二维像素(图元)数组。像素是最小支持的色彩点。

  • ImageDraw使用的二维坐标系原点位于图像的 左上角

  • 我们使用的颜色方案为RGB。颜色的RGB表示和支持由模块 ImageColor 提供。

  • 文本注释使用位图、OpenType或TrueType字体。

  • 大多数绘图命令可能需要一个边界框参数,该参数指定应用命令的图像区域。

  • 一系列坐标可以表示为[(x0, y0), (x1, y1),…(xn, yn)]。

  • 对于某些绘图命令,我们需要角度值。

示例

以下Python示例在给定的图像上绘制一条直线-

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

输出

如果你将上述程序保存为Example.py并执行,它会在图像上画一条线并使用标准的PNG显示实用工具显示出来,如下所示 –

Python Pillow ImageDraw模块

画布

  • ImageDraw是Pillow中的可绘制表面(即,画布)的图像。

  • ImageDraw.Draw(img)返回Image参数img的可绘制画布表示。画布的背景是”img”图像。

示例

以下Python示例在给定的图像上绘制文本。

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

输出

Python Pillow ImageDraw模块

使用’ImageDraw’模块绘制形状

ImageDraw模块允许我们通过首先创建一个与所需图像关联的绘制对象,然后应用它来创建不同的形状。使用’ImageDraw’模块可以绘制的一些常见形状如下:

直线

以下是使用Python Pillow绘制直线的语法:

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

line() 方法将从边界框xy和画布的左上角绘制一条线到右下角。该线使用填充颜色进行填充。 fill和width这两个参数是可选的,默认值分别为None和0。

示例

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

输出

Python Pillow ImageDraw模块

椭圆

以下是使用Python Pillow绘制椭圆的语法 –

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

ellipse() 方法在draw时绘制由包围框xy围成的椭圆。形状使用颜色填充,周边使用颜色描边。参数fill和width的默认值都是None,它们是可选的。

示例

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

输出

Python Pillow ImageDraw模块

矩形

下面是使用Python Pillow绘制矩形的语法 –

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

rectangle()方法会在画布上绘制给定边界框xy的矩形。该形状会用填充颜色fill进行填充,边框会用颜色outline进行描边。fill和width参数的默认值为None,它们是可选参数。

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

输出

Python Pillow ImageDraw模块

多边形

以下是使用Python Pillow绘制矩形的语法 –

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

polygon() 方法在绘图上通过直线连接坐标序列位置seq来绘制多边形。seq中的第一个和最后一个坐标也用直线连接。形状以填充颜色fill和轮廓颜色outline显示。参数fill和outline是可选的,默认值为None。

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

输出

Python Pillow ImageDraw模块

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程