使用Pillow绘制圆、矩形、饼图、圆弧以及绘制文字

导读

Pillow是Python中一个常用的图像处理库,这篇文章我们就来介绍一下如何通过Pillow来实现在图片上绘制各种图像以及文字

安装

pip install Pillow

绘制文字

  • 下载字体文件

在使用PIL在图片上绘制文字的时候,需要先准备一个字体文件,这里我们使用SimHei.ttf
字体文件下载地址:SimHei.ttf字体下载

  • 文字绘制代码
from PIL import Image,ImageFont,ImageDraw


def draw_text():
    #加载字体文件
    font_style = ImageFont.truetype("font/SimHei.ttf", 20, encoding="utf-8")
    #创建一张底图,用来绘制文字
    img = Image.new("RGB",(300,300),(255,255,255))
    draw = ImageDraw.Draw(img)
    #在图片上添加文字
    #fill用来设置绘制文字的颜色,(R,G,B)
    draw.text((100,100),"Python",fill=(255,0,0),font=font_style)
    draw.text((100,200),"你好",fill=(0,255,0),font=font_style)
    #保存图片
    img.save("draw_img.jpg")

draw_text()

使用Pillow绘制圆、矩形、饼图、圆弧以及绘制文字_第1张图片

绘制矩阵

  • rectangle函数参数介绍
    xy:用来设置矩形的起点(左上角)和终点(右下角)坐标,格式(x1,y1,x2,y2)((x1,y1),(x2,y2))
    fill:用来填充矩形内部的颜色,默认是None表示不填充,填充颜色采用RGB(R,G,B)或Grayscale(L)格式
    outline:用来设置矩形边框的颜色,和fill参数相同
    width:设置矩形边框的长度,默认是0
  • 代码
def draw_rectangle():
    # 创建一张底图,用来绘制
    img = Image.new("RGB", (300, 300), (128, 128, 128))
    draw = ImageDraw.Draw(img)
    #绘制矩形
    draw.rectangle((100,100,120,150),fill=(0,255,0),outline=(255,0,0))
    #绘制正方形
    draw.rectangle(((200,200),(250,250)),fill=None,outline=(0,0,255),width=5)
    img.save("draw_img.jpg")

使用Pillow绘制圆、矩形、饼图、圆弧以及绘制文字_第2张图片

绘制椭圆形

ellipse函数中的xy参数表示的是椭圆的外接矩形的顶点坐标左上角右下角,当外接矩形为正方形时,此时绘制的椭圆会变成一个圆

  • 代码
def draw_ellipse():
    # 创建一张底图,用来绘制
    img = Image.new("RGB", (300, 300),(255,255,255))
    draw = ImageDraw.Draw(img)
    # 绘制椭圆形
    draw.ellipse((100, 100, 120, 150), fill=(0, 255, 0), outline=(255, 0, 0))
    # 绘制圆形
    draw.ellipse(((200, 200), (250, 250)), fill=None, outline=(0, 0, 255), width=5)
    img.save("draw_img.jpg")

使用Pillow绘制圆、矩形、饼图、圆弧以及绘制文字_第3张图片

绘制圆弧和饼图

xy参数表示的是左上角和右下角,通过增加startend两个参数用来控制绘制饼图的角度范围

  • 代码
def draw_pieslice():
    # 创建一张底图,用来绘制
    img = Image.new("RGB", (600, 300),(128,128,128))
    draw = ImageDraw.Draw(img)
    #start和end表示开始和结束的角度
    #绘制圆弧
    draw.arc((25, 50, 175, 200), start=30, end=270, fill=(255, 255, 0))
    #绘制弦
    draw.chord((225, 50, 375, 200), start=30, end=270, fill=(255, 255, 0), outline=(0, 0, 0))
    #绘制饼图
    draw.pieslice((425, 50, 575, 200), start=30, end=270, fill=(255, 255, 0), outline=(0, 0, 0))
    img.save("draw_img.jpg")

使用Pillow绘制圆、矩形、饼图、圆弧以及绘制文字_第4张图片

绘制直线、多边形和点

def draw_line():
    # 创建一张底图,用来绘制
    img = Image.new("RGB", (600, 300),(128,128,128))
    draw = ImageDraw.Draw(img)
    #绘制直线
    draw.line(((30, 200), (130, 100), (80, 50)), fill=(255, 255, 0))
    draw.line(((80, 200), (180, 100), (130, 50)), fill=(255, 255, 0), width=10)
    #绘制多边形
    draw.polygon(((200, 200), (300, 100), (250, 50)), fill=(255, 255, 0), outline=(0, 0, 0))
    #绘制点,点的pixel为1,如果觉得太小可以使用绘制圆来替代
    draw.point(((350, 200), (450, 100), (400, 50)), fill=(255, 255, 0))
    #绘制大一点的点,绘制一个半径为3的点
    draw.ellipse(((500, 200),(506, 206)), fill=(255, 0, 0))
    img.save("draw_img.jpg")

使用Pillow绘制圆、矩形、饼图、圆弧以及绘制文字_第5张图片

你可能感兴趣的:(Python修炼之路)