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,最后得到的效果如下面所示:
(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来指定弧线的颜色。
绘制圆后的图像:
小结:有关图形绘制的操作都是类似的,因此这里只给出一个简略的介绍。详细规范请参见PIL-handbook.pdf。