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脚本实现集群检测和管理功能
Mar 06 Python
python获取本机外网ip的方法
Apr 15 Python
使用Python的Tornado框架实现一个一对一聊天的程序
Apr 25 Python
Python+PIL实现支付宝AR红包
Feb 09 Python
使用Python处理Excel表格的简单方法
Jun 07 Python
python一键去抖音视频水印工具
Sep 14 Python
使用python绘制3维正态分布图的方法
Dec 29 Python
使用Python计算玩彩票赢钱概率
Jun 26 Python
Python高级特性 切片 迭代解析
Aug 23 Python
PyCharm中Matplotlib绘图不能显示UI效果的问题解决
Mar 12 Python
如何把python项目部署到linux服务器
Aug 26 Python
Pytorch 统计模型参数量的操作 param.numel()
May 13 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
php通过隐藏表单控件获取到前两个页面的url
2014/09/09 PHP
PHP使用PHPExcel实现批量上传到数据库的方法
2017/06/08 PHP
PHP 多任务秒级定时器的实现方法
2018/05/13 PHP
laravel框架模型中非静态方法也能静态调用的原理分析
2019/11/23 PHP
javascript String 对象
2008/04/25 Javascript
表格 隔行换色升级版
2009/11/07 Javascript
jquery.validate使用攻略 第五步 正则验证
2010/07/01 Javascript
javascript获取所有同类checkbox选项(实例代码)
2013/11/07 Javascript
深入分析escape()、encodeURI()、encodeURIComponent()的区别及示例
2014/08/04 Javascript
JavaScript数据类型详解
2015/04/01 Javascript
JavaScript调用浏览器打印功能实例分析
2015/07/17 Javascript
jQuery toggle 代替方法
2016/03/22 Javascript
浅析函数声明和函数表达式——函数声明的声明提前
2016/05/03 Javascript
JS 仿支付宝input文本输入框放大组件的实例
2017/11/14 Javascript
Vue自定义指令实现checkbox全选功能的方法
2018/02/28 Javascript
layer弹出的iframe层在执行完毕后关闭当前弹出层的方法
2018/08/17 Javascript
layui在form表单页面通过Validform加入简单验证的方法
2019/09/06 Javascript
windows下python模拟鼠标点击和键盘输示例
2014/02/28 Python
Python随机生成彩票号码的方法
2015/03/05 Python
详解Python中with语句的用法
2015/04/15 Python
在Django的form中使用CSS进行设计的方法
2015/07/18 Python
windows10系统中安装python3.x+scrapy教程
2016/11/08 Python
浅谈pyhton学习中出现的各种问题(新手必看)
2017/05/17 Python
Python迭代器定义与简单用法分析
2018/04/30 Python
讲解Python3中NumPy数组寻找特定元素下标的两种方法
2019/08/04 Python
django和flask哪个值得研究学习
2020/07/31 Python
Python中logger日志模块详解
2020/08/04 Python
python修改微信和支付宝步数的示例代码
2020/10/12 Python
分享一枚pycharm激活码适用所有pycharm版本我的pycharm2020.2.3激活成功
2020/11/20 Python
CSS3 倾斜的网页图片库实例教程
2009/11/14 HTML / CSS
荷兰之家英文站:Holland at Home
2016/10/26 全球购物
Marc Jacobs官方网站:美国奢侈品牌
2017/08/29 全球购物
化学专业毕业生自荐信
2013/11/15 职场文书
安全生产年活动总结
2014/08/29 职场文书
小学语文教师研修感悟
2015/11/18 职场文书
clear 万能清除浮动(clearfix:after)
2023/05/21 HTML / CSS