当前位置: 首页 > news >正文

【Python】pillow库学习笔记4-利用ImageDraw和ImageFont在图像上添加文字

部分内容摘自C语言中文网:https://c.biancheng.net/pillow/add-watermark.html

4.ImageDraw

ImageDraw 模块提供了一系列的绘图方法,通过该模块可以创建一个新的图形,或者在现有的图像上再绘制一个图形,从而起到对原图注释和修饰的作用。

draw = ImageDraw.Draw(im)

上述方法会返回一个 ImageDraw 对象,参数 im 表示 Image 对象。
ImageDraw常用方法:

方法说明
text在图像上绘制文字
line绘制直线、线段
eclipse绘制椭圆形
rectangle绘制矩形
polygon绘制多边形

例:在图像上绘制矩形

from PIL import Image,ImageDraw

#im = Image.new('RGB',(200,200),color='gray')#创建 Image 对象,当做背景图
im = Image.open('村庄2.jfif')#打开已有图片
#创建 ImageDraw 对象
draw = ImageDraw.Draw(im)
#以左上角为原点,绘制矩形。元组坐标序列表示矩形的位置、大小;fill设置填充色为红色,outline设置边框线为黑色
draw.rectangle((1340,1040,1470,1140),fill=None,outline=(255,0,0))
#查看原图片
im.show()
#保存图片
im.save("添加矩形图.png")

蓝色屋顶处添加了红色矩形框,没有设置填充颜色。
在这里插入图片描述

5.ImageFont

ImagreFont 模块通过加载不同格式的字体文件,从而在图像上绘制出不同类型的文字,比如 TrueType 和 OpenType 类型的字体。

创建字体对象的语法格式如下:

font = ImageFont.truetype(font='字体文件路径', size=字体大小)

如果想要在图片上添加文本,还需要使用 ImageDraw.text() 方法,语法格式如下:

d.text((x,y), "text", font, fill)

参数说明如下:
(x,y):图像左上角为坐标原点,(x,y) 表示添加文本的起始坐标位置;
text:字符串格式,要添加的文本内容;
font:ImageFont 对象;
fill:文本填充颜色。

例:添加文字说明

from PIL import Image,ImageFilter,ImageFont,ImageDraw

im = Image.open('村庄2.jfif')

font=ImageFont.truetype('C:/Windows/Fonts/simhei.ttf',size=72) #加载本地字体,黑体,72
om1 = im.filter(ImageFilter.GaussianBlur(3))#高斯模糊
draw = ImageDraw.Draw(om1)#创建画布对象
#在原图像上添加文本
draw.text(xy=(80,50),text='GaussianBlur高斯模糊',fill=(255,0,0),font=font)

om1.save('p//aGaussianBlur.jpg')

运行结果
在这里插入图片描述

相关文章:

  • 【Mysql】事务管理:原理、操作与应用
  • 怎么处理 Vue 项目中的错误的?
  • Python----数据分析(足球运动员数据分析)
  • 2025年注册安全工程师考试练习题
  • SQL Server 中常见的数据类型及其详细解释、内存占用和适用场景
  • golang不使用锁的情况下,对slice执行并发写操作,是否会有并发问题呢?
  • linux实现ARP协议
  • 数据结构每日一题day3(顺序表)★★★★★
  • css/scss(at-rules)基础使用(basic use)
  • LangChain开发(九)基于Rag实现文档问答
  • 啸叫抑制(AFS)从算法仿真到工程源码实现-第四节-数据仿真
  • Day15 -实例 端口扫描工具 WAF识别工具的使用
  • 【MyBatisPlus】MyBatisPlus介绍与使用
  • spring boot + thymeleaf整合完整例子
  • ES6-Symbol
  • CTF题目《高明的黑客》(强网杯 2019)Write up
  • 靶场(十八)---小白心得思路分享---shenzi
  • 数据库三级填空+应用(2)
  • 使用 gone.WrapFunctionProvider 快速接入第三方服务
  • vue数字公式篇 Tinymce结合使用(二)
  • “鱼米之乡”江苏兴化的产业哲学:以融合与创新重构价值链条
  • 观察|印度购买“阵风”舰载机,为掌控印度洋加速升级海航装备
  • 巴菲特首次明确批评贸易战,“投资界春晚”有哪些看点?一文速览
  • 泽连斯基拒绝普京72小时停火提议,坚持应尽快实现30天停火
  • AI世界的年轻人|他用影像大模型解决看病难题,“要做的研究还有很多”
  • 刘洪洁已任六安市委副书记、市政府党组书记