前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >软件测试|不会吧,你还不知道用pillow绘制图像?

软件测试|不会吧,你还不知道用pillow绘制图像?

原创
作者头像
Tester_muller
发布2023-03-05 10:29:07
3500
发布2023-03-05 10:29:07
举报

前言

我们之前做数据可视化分享的时候,讲解了使用pyecharts绘制图像的方法,比如绘制柱状图,饼状图,折线图等,但是,我们如果要绘制不定形状的图像,应该怎么去绘制呢,当然,还是要使用到我们的神器pillow来绘制。下面我们就来介绍使用pillow来绘制各种类型的图像。

pillow绘制图像,需要引入ImageDraw类来进行图像绘制。

绘制图形

绘制图形之前,我们先要生成一个底图,用来绘制我们的图形,代码如下:

from PIL import Image, ImageDraw

image = Image.new('RGB', (600, 400), 'lightgrey')
draw = ImageDraw.Draw(image)

ImageDraw类给我们提供了丰富的选择,支持我们绘制圆弧,饼图,折线图,矩形图,多边形等方法,下面我们来一一介绍:

  1. 绘制线形图

我们可以绘制直线和折线图,代码如下:

draw.line((50, 50, 100, 150), fill='green', width=6)
draw.line((50, 200, 75, 300, 100, 250, 75, 200), fill='red', width=10, joint='curve')

image.save('imagedraw_lines.png')

绘制的图形如下:

在这里插入图片描述
在这里插入图片描述
  1. 绘制多边形

我们可以通过调用polygon()和regular_polygon来绘制多边形和正多边形,代码如下:

draw.polygon((150, 50, 220, 150, 250, 50), fill='purple')
draw.regular_polygon((200, 300, 75), n_sides=5, rotation=10, fill='green')

image.save('imagedraw_polygon.png')

绘制图像如下:

在这里插入图片描述
在这里插入图片描述
  1. 绘制矩形

我们可以通过rectangle()方法来绘制矩形,代码如下:

#绘制矩形
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)

绘制图像如下:

在这里插入图片描述
在这里插入图片描述
  1. 绘制椭圆形与圆形

我们可以使用ellipse()方法来绘制椭圆形,代码如下:

# 绘制椭圆
draw.ellipse((300, 50, 450, 150), outline='red', width=4)
# 绘制圆形
draw.ellipse((200, 200, 250, 250), outline='blue', width=3)

绘制的图形如下:

在这里插入图片描述
在这里插入图片描述
  1. 绘制饼状图,弧线及弦线

我们可以通过arc()绘制弧线,通过chord()绘制弦线,通过pieslice()绘制饼状图,示例代码如下:

draw.arc((300, 200, 450, 350), start=90, end=200, fill='yellow', width=4)
draw.chord((400, 200, 550, 350), start=90, end=200, fill='cyan')
draw.pieslice((500, 200, 650, 350), start=90, end=200, fill='magenta')

绘制的图像如下:

在这里插入图片描述
在这里插入图片描述

绘制文字图

Pillow通过ImaegFont模块(用于选择字体)和ImageDraw模块提供处理文本的功能,绘制文字图形时,我们需要引入字体,可以下载或者添加系统的字体路径,指定字体,这里我们下载字体文件并导入来绘制文字图。

绘制文字图时,我们需要调用text()方法,示例代码如下:

font_style = ImageFont.truetype("font/SimHei.ttf", 20, encoding="utf-8")
draw.text((100,100), '拜仁慕尼黑', font=font_style, fill='blue')
draw.text((200,250), 'forever no.1', font=font_style, fill='red')

绘制图像如下:

在这里插入图片描述
在这里插入图片描述

总结

本篇文章主要介绍了使用pillow绘制不同形状的图形,以及绘制文字图形的方法,希望能帮助大家更了解pillow模块的使用,方便大家的学习和工作!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
    • 绘制图形
      • 绘制文字图
        • 总结
        相关产品与服务
        图像处理
        图像处理基于腾讯云深度学习等人工智能技术,提供综合性的图像优化处理服务,包括图像质量评估、图像清晰度增强、图像智能裁剪等。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档