python实现图片插入文字


Posted in Python onNovember 26, 2019

本文实例为大家分享了python图片插入文字的具体代码,供大家参考,具体内容如下

问题

如何在图片中插入大量文字并且自动换行

效果

原始图

python实现图片插入文字

效果图

python实现图片插入文字

注明

若需要写入中文请使用中文字体

实现方式

from PIL import Image, ImageDraw, ImageFont


class ImgText:
  font = ImageFont.truetype("micross.ttf", 24)

  def __init__(self, text):
    # 预设宽度 可以修改成你需要的图片宽度
    self.width = 100
    # 文本
    self.text = text
    # 段落 , 行数, 行高
    self.duanluo, self.note_height, self.line_height = self.split_text()

  def get_duanluo(self, text):
    txt = Image.new('RGBA', (100, 100), (255, 255, 255, 0))
    draw = ImageDraw.Draw(txt)
    # 所有文字的段落
    duanluo = ""
    # 宽度总和
    sum_width = 0
    # 几行
    line_count = 1
    # 行高
    line_height = 0
    for char in text:
      width, height = draw.textsize(char, ImgText.font)
      sum_width += width
      if sum_width > self.width: # 超过预设宽度就修改段落 以及当前行数
        line_count += 1
        sum_width = 0
        duanluo += '\n'
      duanluo += char
      line_height = max(height, line_height)
    if not duanluo.endswith('\n'):
      duanluo += '\n'
    return duanluo, line_height, line_count

  def split_text(self):
    # 按规定宽度分组
    max_line_height, total_lines = 0, 0
    allText = []
    for text in self.text.split('\n'):
      duanluo, line_height, line_count = self.get_duanluo(text)
      max_line_height = max(line_height, max_line_height)
      total_lines += line_count
      allText.append((duanluo, line_count))
    line_height = max_line_height
    total_height = total_lines * line_height
    return allText, total_height, line_height

  def draw_text(self):
    """
    绘图以及文字
    :return:
    """
    note_img = Image.open("001.png").convert("RGBA")
    draw = ImageDraw.Draw(note_img)
    # 左上角开始
    x, y = 0, 0
    for duanluo, line_count in self.duanluo:
      draw.text((x, y), duanluo, fill=(255, 0, 0), font=ImgText.font)
      y += self.line_height * line_count
    note_img.save("result.png")


if __name__ == '__main__':
  n = ImgText(
    "1234567890" * 5)
  n.draw_text()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python重新引入被覆盖的自带function
Jul 16 Python
Python脚本实现自动发带图的微博
Apr 27 Python
Python模拟随机游走图形效果示例
Feb 06 Python
Python利用matplotlib.pyplot绘图时如何设置坐标轴刻度
Apr 09 Python
python+pandas生成指定日期和重采样的方法
Apr 11 Python
Python简单I/O操作示例
Mar 18 Python
python Event事件、进程池与线程池、协程解析
Oct 25 Python
浅谈在django中使用redirect重定向数据传输的问题
Mar 13 Python
keras实现多种分类网络的方式
Jun 11 Python
Python Tkinter图形工具使用方法及实例解析
Jun 15 Python
python 实现aes256加密
Nov 27 Python
Python 实现二叉查找树的示例代码
Dec 21 Python
python NumPy ndarray二维数组 按照行列求平均实例
Nov 26 #Python
python向图片里添加文字
Nov 26 #Python
python 遍历pd.Series的index和value
Nov 26 #Python
Python爬取爱奇艺电影信息代码实例
Nov 26 #Python
numpy ndarray 按条件筛选数组,关联筛选的例子
Nov 26 #Python
浅谈python已知元素,获取元素索引(numpy,pandas)
Nov 26 #Python
Python如何使用BeautifulSoup爬取网页信息
Nov 26 #Python
You might like
joomla内置的表单验证功能使用方法
2010/06/11 PHP
PHP中的替代语法介绍
2015/01/09 PHP
Paypal实现循环扣款(订阅)功能
2017/03/23 PHP
php实现留言板功能(代码详解)
2017/03/28 PHP
PHP通过bypass disable functions执行系统命令的方法汇总
2018/05/02 PHP
tp5框架使用composer实现日志记录功能示例
2019/01/10 PHP
PHP实现简单登录界面
2019/10/23 PHP
用js实现计算代码行数的简单方法附代码
2007/08/13 Javascript
js循环改变div颜色具体方法
2013/06/25 Javascript
JSONP跨域的原理解析及其实现介绍
2014/03/22 Javascript
JS+CSS实现自适应选项卡宽度的圆角滑动门效果
2015/09/15 Javascript
javascript回到顶部特效
2016/07/30 Javascript
AngularJS实现树形结构(ztree)菜单示例代码
2016/09/18 Javascript
js创建对象几种方式的优缺点对比
2016/09/28 Javascript
基于jQuery使用Ajax动态执行模糊查询功能
2018/07/05 jQuery
vue3.0 CLI - 2.5 - 了解组件的三维
2018/09/14 Javascript
JavaScript函数式编程(Functional Programming)组合函数(Composition)用法分析
2019/05/22 Javascript
iview form清除校验状态的实现
2019/09/19 Javascript
VsCode里的Vue模板的实现
2020/08/12 Javascript
vue打开其他项目页面并传入数据详解
2020/11/25 Vue.js
[05:37]DOTA2-DPC中国联赛 正赛 Elephant vs iG 选手采访
2021/03/11 DOTA
Python时间模块datetime、time、calendar的使用方法
2016/01/13 Python
如何用itertools解决无序排列组合的问题
2017/05/18 Python
python万年历实现代码 含运行结果
2017/05/20 Python
linux环境下安装python虚拟环境及注意事项
2020/01/07 Python
New Balance比利时官方网站:购买鞋子和服装
2021/01/15 全球购物
如何理解transaction事务的概念
2015/05/27 面试题
档案检查欢迎词
2014/01/13 职场文书
行政文秘岗位职责范本
2014/02/10 职场文书
应届毕业生求职信范文
2014/07/07 职场文书
擅自离岗检讨书
2014/09/12 职场文书
四风查摆问题自查报告
2014/10/10 职场文书
2015年转正工作总结范文
2015/04/02 职场文书
论文答辩开场白大全
2015/05/27 职场文书
朋友聚会开场白
2015/06/01 职场文书
解决golang 关于全局变量的坑
2021/05/06 Golang