绘制图形

这里讲的图形,指的是点、线、面和文本等基本图形元素。有时候,我们需要在图像上绘制这样一些图形,进行标注等操作。

在图像上绘制图形,需要用到Image模块的ImageDraw子模块。利用该模块的Draw函数生成一个draw对象,然后使用draw对象的方法进行绘图。

下面的代码生成一个draw对象,它跟一个image对象是绑定的,后续的所有绘图操作都在这个image对象上进行。

code.python
from PIL import Image,ImageDraw
img=Image.open('D:\\pic.jpg')
draw=ImageDraw.Draw(img)

draw对象的常用方法包括:

  • point(xy,fill): xy,点序列,[(x1,y1),(x2,y2),…], fill,RGBA元组, 'red'
  • line(xy,fill,width): xy,点序列,[(x1,y1),(x2,y2),…]或者[x1,y1,x2,y2,…]
  • rectangle(xy,fill,outline): xy,(left,top,right,bottom), outline,边的颜色
  • ellipse(xy,fill,outline)
  • polygon(xy,fill,outline)

用这几个方法可以分别绘制点、直线段、矩形、椭圆和多边形等。

下面的代码打开一个图像,然后在该图像上绘制矩形、直线段和点。

code.python
>>> from PIL import Image,ImageDraw
>>> img=Image.open('D:\\pic.jpg')
>>> draw=ImageDraw.Draw(img)
>>> draw.rectangle(xy=[(100,100,200,200)],fill='yellow',outline='blue')
>>> draw.line(xy=[(100,100),(200,200)],fill='green',width=2)
>>> draw.point(xy=[(150,150),(250,250)],fill='red')
>>> img.show()

结果如下图所示。

Document Image