使用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()

在这里插入图片描述

绘制矩阵
  • 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")

在这里插入图片描述

绘制椭圆形

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")

在这里插入图片描述

绘制圆弧和饼图

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")

在这里插入图片描述

绘制直线、多边形和点
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")

在这里插入图片描述

要对tiff文件进行矩形绘制和标注文字,可以使用Python中的Pillow库和OpenCV库。 首先,使用Pillow库打开tiff文件: ```python from PIL import Image img = Image.open("example.tif") ``` 接下来,使用Pillow库的ImageDraw模块绘制矩形框: ```python from PIL import Image, ImageDraw # 创建ImageDraw对象 draw = ImageDraw.Draw(img) # 绘制矩形框 draw.rectangle((10, 10, 100, 100), outline='red', width=2) # 显示图片 img.show() ``` 其中,`draw.rectangle((10, 10, 100, 100), outline='red', width=2)`表示绘制一个左上角坐标为(10,10),右下角坐标为(100,100)的矩形框,边框颜色为红色,线的宽度为2。 如果要在矩形框中添加文字标注,可以使用`draw.text()`方法: ```python from PIL import Image, ImageDraw, ImageFont # 创建ImageDraw对象 draw = ImageDraw.Draw(img) # 绘制矩形框 draw.rectangle((10, 10, 100, 100), outline='red', width=2) # 添加文字标注 font = ImageFont.truetype("arial.ttf", 16) draw.text((20, 20), "Example Text", font=font) # 显示图片 img.show() ``` 其中,`font = ImageFont.truetype("arial.ttf", 16)`表示使用字体为arial,大小为16的字体,`draw.text((20, 20), "Example Text", font=font)`表示在矩形框内添加文字标注,文字内容为"Example Text",坐标为(20,20)。 如果要使用OpenCV库进行绘制,可以使用cv2.rectangle()和cv2.putText()方法: ```python import cv2 # 读取tiff文件 img = cv2.imread('example.tif') # 绘制矩形框 cv2.rectangle(img, (10,10), (100,100), (0,0,255), 2) # 添加文字标注 cv2.putText(img, "Example Text", (20,20), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (255,255,255), 1, cv2.LINE_AA) # 显示图片 cv2.imshow("Image", img) cv2.waitKey(0) ``` 其中,`cv2.rectangle(img, (10,10), (100,100), (0,0,255), 2)`表示绘制一个左上角坐标为(10,10),右下角坐标为(100,100)的矩形框,颜色为红色,线的宽度为2,`cv2.putText(img, "Example Text", (20,20), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (255,255,255), 1, cv2.LINE_AA)`表示在矩形框内添加文字标注,文字内容为"Example Text",坐标为(20,20),字体为FONT_HERSHEY_SIMPLEX,大小为0.5,颜色为白色,线的宽度为1。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

修炼之路

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值