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

举报
Tester_muller 发表于 2023/03/05 10:28:38 2023/03/05
【摘要】 前言我们之前做数据可视化分享的时候,讲解了使用pyecharts绘制图像的方法,比如绘制柱状图,饼状图,折线图等,但是,我们如果要绘制不定形状的图像,应该怎么去绘制呢,当然,还是要使用到我们的神器pillow来绘制。下面我们就来介绍使用pillow来绘制各种类型的图像。pillow绘制图像,需要引入ImageDraw类来进行图像绘制。 绘制图形绘制图形之前,我们先要生成一个底图,用来绘制我...

前言

我们之前做数据可视化分享的时候,讲解了使用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模块的使用,方便大家的学习和工作!

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。