简介
ImageDraw 模块也是 Pillow 库的主要模块之一,它能给图像化圆弧,画横线,写上文字等。
引入 ImageDraw 模块
from PIL import Image, ImageDraw # 引入 ImageDraw
需要对图像进行Draw操作,首先需要创建 Draw 对象
draw = ImageDraw.Draw(im) # 创建 Draw 对象
ImageDraw.arc 添加圆弧
ImageDraw.arc(xy,start,end,fill=None,width=0)
在给定的边界(左,上,右,下)内绘制圆弧。圆弧使用 fill-颜色和 width-宽度的线条从start角度开始到end角度结束。
参数:
- xy
- start
- end
- fill
- width
示例:
draw.arc((0, 0,100,100) , start=0, end=300, fill='red',width=3)
ImageDraw.pieslice
ImageDraw.pieslice(xy,start,end,fill=None,outline=None,width=0)
与圆弧差不多,差别在于两端点之间用直线连接,里面填充 fill 颜色。
参数:
- xy
- start
- end
- fill
- outline
- width
示例:
draw.pieslice((0, 0)+ im.size , start=0, end=300, outline="#FF0000",fill='#FFFFFF',width=3)
ImageDraw.chord 画圆弧(端点相连)
ImageDraw.chord(xy,start,end,fill=None,outline=None,width=0)
与 arc( ) 类似,区别在与起始点与结束点使用直线相连,中间区域填充 fill 颜色,外部线条使用 outline 颜色。
参数:
- xy
- start
- end
- outline
- fill
- width
示例:
draw.chord((0, 0, 200, 200), 0, 90, fill=(100, 20, 60), outline="#FF0000")
ImageDraw.bitmap 根据蒙版绘制图像
ImageDraw.bitmap(xy,bitmap,fill=None)
根据bitmap为蒙版从(x,y)位置开始填充 fill -颜色。与Image.paste(im, box, mask) 方法类似,paste 填充图像,bitmap 填充颜色。
参数:
- xy
- bitmap – 作为蒙版的图像。必须是含透明图 mode=1 或能做遮罩的 mode (L or RGBA)
- fill – 填充颜色
示例:
bitmap = Image.open('../img/logo.png')
draw.bitmap((0, 0), bitmap, 'red')
ImageDraw.ellipse 画椭圆
ImageDraw.ellipse(xy,fill=None,outline=None,width=0)
在 xy区域内画椭圆
参数:
- xy
- outline
- fill
- width
示例:
draw.ellipse((0, 0, 200, 100), fill=(100, 20, 60), outline="#FF0000", width=3)
ImageDraw.line 画线条
ImageDraw.line(xy,fill=None,width=0,joint=None)
在xy列表中的坐标之间绘制一条线。
参数:
- xy
- fill
- width
- joint – 线之间的联合类型,如:curve 圆角。
示例:
draw.line((0, 0)+ im.size, width=5,fill=128)
ImageDraw.point 坐标点填充颜色
ImageDraw.point(xy,fill=None)
给xy列出的坐标点上填充颜色
参数:
- xy
- fill
示例:
xy = [(i, i) for i in range(0, 300, 5)]
draw.point(xy, "#FF0000")
ImageDraw.rectangle 画长方型
ImageDraw.rectangle(xy,fill=None,outline=None,width=0)
画长方形
参数:
- xy
- outline
- fill
- width
示例:
draw.rectangle((20, 20, 200, 100), fill=(100, 20, 60), outline="#FF0000", width=3)
ImageDraw.text 绘制文字
ImageDraw.text(xy,text,fill=None,font=None,anchor=None,spacing=0,align="left",direction=None,features=None)
给定位置绘制字符串
参数:
- xy
- text
- fill
- font
- spacing
- align
- direction
- features – 在文本布局期间使用的OpenType字体功能列表。通常用于打开默认情况下未启用的可选字体功能,如'dlig'或'ss01';也可用于关闭默认字体功能,例如'-liga'以禁用连字或'-kern'禁用字距调整。参阅:Registered features - Typography
示例:
from PIL import ImageFont
im = Image.new(‘RGB’, (300, 300), 0)
# 创建可绘制的对象
draw = ImageDraw.Draw(im)
# 设置字体,将字体库复制到当前目录
font = ImageFont.truetype(‘arialbi.ttf’, 32)
# 填充文字
draw.text((10,10), “woodman”, font=font, fill="#FFFFFF")
ImageDraw.multiline_text 绘制带换行的文字
ImageDraw.multiline_text(xy,text,fill=None,font=None,anchor=None,spacing=0,align=“left”,direction=None,features=None)
绘制带换行的文字
参数:同 ImageDraw.text
示例:
from PIL import ImageFont
im = Image.new(‘RGB’, (300, 300), 0)
# 创建可绘制的对象
draw = ImageDraw.Draw(im)
# 设置字体,将字体库复制到当前目录
font = ImageFont.truetype(‘arialbi.ttf’, 32)
# 填充文字
draw.multiline_text((10,10), “Hello,\nwoodman”, font=font, fill="#FFFFFF")
ImageDraw.textsize 获取文字的大小
ImageDraw.textsize(text,font=None,spacing=4,direction=None,features=None)
获取文字的大小,(width, height)
参数:
- text
- font
- spacing
- align
- direction
- features – 在文本布局期间使用的OpenType字体功能列表。通常用于打开默认情况下未启用的可选字体功能,如’dlig’或’ss01’;也可用于关闭默认字体功能,例如’-liga’以禁用连字或’-kern’禁用字距调整。参阅:Registered features - Typography
示例:
from PIL import ImageFont
im = Image.new(‘RGB’, (300, 300), 0)
# 创建可绘制的对象
draw = ImageDraw.Draw(im)
# 设置字体,将字体库复制到当前目录
font = ImageFont.truetype(‘arialbi.ttf’, 32)
# 获取文字大小
print(draw.textsize(‘woodman’,font))
ImageDraw.multiline_textsize 获取带换行的文字的大小
ImageDraw.multiline_textsize(text,font=None,spacing=4,direction=None,features=None)
获取带换行的文字的大小
参数:同 ImageDraw.textsize
from PIL import ImageFont
im = Image.new(‘RGB’, (300, 300), 0)
# 创建可绘制的对象
draw = ImageDraw.Draw(im)
# 设置字体,将字体库复制到当前目录
font = ImageFont.truetype(‘arialbi.ttf’, 32)
# 获取文字大小
print(draw.multiline_textsize(‘Hello,\nwoodman’,font))