📜  PythonPillow-ImageDraw模块

📅  最后修改于: 2020-11-07 07:50:26             🧑  作者: Mango


“ ImageDraw”模块为Image Object提供了简单的2D图形支持。通常,我们使用此模块来创建新图像,注释或修饰现有图像,以及即时生成图形以供Web使用。

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

  • 可以将图像深思熟虑为像素(图片元素)的二维阵列。像素是受支持的最小颜色点。

  • 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显示实用程序进行显示,如下所示:

效用

帆布

  • ImageDraw是图像的枕头可绘制表面(即画布)。

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

输出

帆布

使用“ ImageDraw”模块绘制图形

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

线

以下是使用Python枕头画线的语法-

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

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

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枕头绘制椭圆的语法-

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

ellipse()方法在绘制时绘制由边界框xy包围的椭圆。使用颜色填充和颜色轮廓中的周边填充形状。 None的默认值是可选参数fill和width。

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枕头绘制矩形的语法-

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

矩形()方法在绘制时绘制给定边界框xy的矩形。使用颜色填充和颜色轮廓中的周边填充形状。 None的默认值是可选参数fill和width。

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枕头绘制矩形的语法-

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

polygon()方法绘制一个多边形,该多边形用直线连接绘制时坐标序列位置seq。 seq中的第一个和最后一个坐标也由一条直线连接。使用颜色填充和颜色轮廓中的周边填充形状。参数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()

输出

多边形