ImageDraw模块:

ImageDraw模块提供了基本的图形能力,这里的图形能力指的主要是图形的绘制能力。PIL库提供了比较丰富的图形绘制函数,可以绘制直线、弧线、矩形、多边形、椭圆、扇形等等。ImageDraw实现了一个Draw类,所有的图形绘制功能都是在Draw类实例的方法中实现的。实例化一个Draw类实例很简单:

import Image,ImageDraw

img = Image.open("img.jpg")

draw = ImageDraw.Draw(img)

首先要导入ImageDraw模块。然后,因为绘图操作是在图像上进行的,因此实例化Draw类的时候要把Image对象img通过参数传递给Draw类的构造函数。现在,你就可以调用draw的各种方法在img上绘制图形了。

(1)绘制直线:

import Image,ImageDraw

img = Image.open("img.jpg")

draw = ImageDraw.Draw(img)

width,height = img.size

draw.line(((0,0),(width-1,height-1)),fill=255)

draw.line(((0,height-1),(width-1,0)),fill=255)

img.save("cross_line.jpg")

解释一下上面这段代码:

前面三行这里就不解释了。width,height = img.size是得到img的大小,得到这两个属性的主要目的是要在下面的两行代码中使用:

draw.line(((0,0),(width-1,height-1)),fill=255)

draw.line(((0,height-1),(width-1,0)),fill=255)

这两行代码在img图像的两个对角线方向绘制了两条直线。最后,我们把绘制了两条对角线的图像保存为cross_line.jpg,最后得到的效果如下面所示:

Python PIL的ImageDraw模块

(2)绘制圆:

import Image,ImageDraw

img = Image.open("img.jpg")

width,height = img.size

draw = ImageDraw.Draw(img)

draw.arc((0,0,width-1,height-1),0,360,fill=255)

img.save("circle.jpg")

这几行代码和上面绘制对角线的代码相比,只更改了一行,即:

draw.arc((0,0,width-1,height-1),0,360,fill=255)

说明:

(0,0,width-1,height-1)指定了所画弧线的界限;

0,360是所画弧线的起始角度和终止角度;

fill=255指定了所画线的颜色,注意:PIL的文档上说这里应该用outline=255,但是我发现实际只能用fill=255来指定弧线的颜色。

绘制圆后的图像:

Python PIL的ImageDraw模块

小结:有关图形绘制的操作都是类似的,因此这里只给出一个简略的介绍。详细规范请参见PIL-handbook.pdf。

没有登录不能评论