• 主要解决在图片上面写的文字并把文字居中显示

PIL 安装

pip install pillow
  • 初始图片

基本使用

# 导入需要的包
from PIL import Image, ImageDraw
  • 使用Image.open(图片路径)读取图片
pil_image = Image.open("./timg.jpg")
# pil_image 接收住这个图片对象
  • 使用size方法可以计算图片的像素
# width 为图片的宽, height为图片的高
width, height = pil_image.size
  • 使用Image.new生成一个新的画布,暂且就叫他画布
# 生成一张尺寸为 width * height  背景色为白色的图片
bg = Image.new('RGB', (width, height ), color=(255,255,0))
# 第一个参数应该是类型, 暂时不太了解,
# 第二个参数为画布的尺寸(像素),要传一个元祖
# 第三个为颜色,这个颜色也可以使用其它方法代表比如16进制
  • 使用paste方法把刚才读取的文件写入到画布中
 bg.paste(pil_image , (0, 0))  # 写入底图# 第一个参数为图片# 第二个参数为图片的要从哪里开始写入,# 比如一个150*150的图片, 左上角为(0,0),右下角为(150,150)

文字居中

  • 本文重点来了----写入文字居中

    设置完字体后,使用getsize方法拿到文本占用的像素

word = "如果有一天"   # 写入的文字
# word = word.decode('utf-8')  # 这里吧文本就是编下码, 有时候写入的时候会乱码
# 使用ImageFout.truetype("字体", "文字大小(像素px)")
SimHei = "./SimHei.TTF"    # 一个字体文件
font = ImageFont.truetype(SimHei, 50)  # 设置字体和大小
# 计算出要写入的文字占用的像素
w, h = font.getsize(word)   #
# 创建一个可以在给定图像上绘图的对象
draw = ImageDraw.Draw(bg)
"""
####  (width-w)/2, height/2
画布的宽减去写入文字占用的像素的宽除以2,得到文字写入的初始位置, height想让文字写在哪个高度
fill 为字体颜色
"""
draw.text(((width-w)/2, height/2), word, fill="#78e830", font=font)
# 保存画布
bg.save("hello_PIL.png", "PNG")
  • 完成时的图片

  • 完整代码
# 导入需要的包
from PIL import Image, ImageFont, ImageDraw# 读取图片
pil_image = Image.open("./timg.jpg")
# pil_image 接收住这个图片对象
# width 为图片的宽, height为图片的高
width, height = pil_image.size# 生成一张尺寸为 width * height  背景色为白色的图片
bg = Image.new('RGB', (width, height), color=(255,255,0))bg.paste(pil_image, (0, 0))  # 写入底图word = "如果有一天"   # 写入的文字
# word = word.decode('utf-8')  # 这里吧文本就是编下码, 有时候从数据库中拿出来的数据写入的时候会乱码
# 使用ImageFout.truetype("字体", "文字大小(像素px)")
SimHei = "./SimHei.TTF"    # 一个字体文件
font = ImageFont.truetype(SimHei, 50)  # 设置字体和大小
# 计算出要写入的文字占用的像素
w, h = font.getsize(word)   #
# 创建一个可以在给定图像上绘图的对象
draw = ImageDraw.Draw(bg)
draw.text(((width-w)/2, height/2), word, fill="#78e830", font=font)
# 保存画布
bg.save("hello_PIL.png", "PNG")

Python图像处理-使用PIL模块在图片上生成的文字居中显示相关推荐

  1. 利用python PIL模块在图片上写文字

    利用PIL模块,简单处理图片 from PIL import Image, ImageFont, ImageDraw # 导入模块 im = Image.open("smile.jpg&qu ...

  2. python中怎样在图片上画线段_python 实现PIL模块在图片画线写字

    图片上画线条 import sys from PIL import Image,ImageDraw im = Image.open("th.png") draw = ImageDr ...

  3. python怎么在图片上写字的软件_python 实现PIL模块在图片画线写字

    图片上画线条 import sys from PIL import Image,ImageDraw im = Image.open("th.png") draw = ImageDr ...

  4. python写字_python 实现PIL模块在图片画线写字

    图片上画线条 import sys from PIL import Image,ImageDraw im = Image.open("th.png") draw = ImageDr ...

  5. python画波浪线_python 实现PIL模块在图片画线写字

    图片上画线条 import sys from PIL import Image,ImageDraw im = Image.open("th.png") draw = ImageDr ...

  6. PIL篇---python 实现PIL模块在图片画线写字

    python 实现PIL模块在图片画线写字 from PIL import Image, ImageDraw, ImageFont# get an image base = Image.open('2 ...

  7. Python图像处理库PIL -- 学习资源

    Resources 官方指南PIL Handbook(建议看英文,翻译) pil下载 安装中文指南 from the PythonWare PIL home page 推荐先看Python Imagi ...

  8. python基础教程:Python图像处理库PIL中图像格式转换的实现

    这篇文章主要介绍了Python图像处理库PIL中图像格式转换的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧 在数字图像处理 ...

  9. Python图像处理库PIL中图像格式转换(一)

    参考:https://blog.csdn.net/icamera0/article/details/50843172 在数字图像处理中,针对不同的图像格式有其特定的处理算法.所以,在做图像处理之前,我 ...

最新文章

  1. pandas使用groupby函数、agg函数获取每个分组聚合对应的标准差(std)实战:计算分组聚合单数据列的标准差(std)、计算分组聚合多数据列的标准差(std)
  2. SAP PM入门系列30 - IW39 Display Orders
  3. .NET重构—单元测试重构
  4. Oracle创建表,并添加默认值和备注
  5. MSF(三):信息收集
  6. Serv-U服务器的管理3
  7. 信息学奥赛一本通 1039:判断数正负 | OpenJudge NOI 1.4 01
  8. 针对vue ui启动项目抛error
  9. SharePoint开发中怎样使用Visual Studio给你的Web Part加入图标
  10. vue ----组件数据共享
  11. jvm最大最小内存参数设置
  12. 华为手机将成“世界第一”;小米 9 发售紧急叫停;张一鸣对多闪“没预期” | 极客头条...
  13. es5 和 es6 class
  14. AnsiString用法(转)
  15. 最佳的46+14款免费软件
  16. 【历史上的今天】9 月 2 日:互联网的“诞生日”;三星逐步跌落神坛;世界上第一个 ATM 自动取款机
  17. NOIP2017+停课总结
  18. 基于单片机的电子琴系统设计(#0424)
  19. c语言输入数字输出字母代码,c语言输入数字输出字母代码求解释
  20. WannaMine挖矿木马手工处理-NetworkDistribution

热门文章

  1. 解决ValueError: Shape of passed values is (1,5), indices imply (1,3)
  2. 团体天梯 L2-030 冰岛人 (25 分)(思路、测试点分析)
  3. 图像识别的应用与实践
  4. angular学习总结-基本使用
  5. 手机计算机用户使用说明书模板,中国移动家庭宽带用户手册范本.doc
  6. 专注赋能开发者,英特尔On技术创新峰会10月18日中文上线丨Intel Innovation
  7. JavaScript事件循环详解
  8. 系统集成项目管理工程师10大管理47个过程域输入输出工具(项目质量管理)
  9. FileZilla连接虚拟机Ubuntu,无法连接到服务器
  10. axure 画小程序效果图_【附源文件】5款精美小程序原型设计模板,触手可得