Python Pillow ImageDraw 模块

Python Pillow ImageDraw 模块

ImageDraw ‘模块为Image Object提供了简单的2D图形支持。一般来说,我们使用这个模块来创建新的图像,注释或修饰现有的图像,并为网络使用而即时生成图形。

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

  • 一个图像可以被很好地理解为一个像素(图片元素)的二维阵列。一个像素是被支持的最小的颜色点。

  • ImageDraw所使用的二维坐标系的原点是在图像的 左上角

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

  • bitmap、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和canvas的左上角到右下角画一条线。该线使用填充颜色。参数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() 方法在绘制时画出由边界框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 Pillow - ImageDraw 模块

矩形

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

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

rectangle() 方法在绘制时给定边界框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 Pillow - ImageDraw 模块

多边形

以下是使用Python pillow绘制矩形的语法:

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

输出

Python Pillow - ImageDraw 模块

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程