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文件夹与文件的操作实现代码
Jul 13 Python
Python常用算法学习基础教程
Apr 13 Python
Python3安装Scrapy的方法步骤
Nov 23 Python
Python爬虫实现全国失信被执行人名单查询功能示例
May 03 Python
Python实现模拟浏览器请求及会话保持操作示例
Jul 30 Python
windows下python安装小白入门教程
Sep 18 Python
python 利用for循环 保存多个图像或者文件的实例
Nov 09 Python
numpy求平均值的维度设定的例子
Aug 24 Python
python爬虫中多线程的使用详解
Sep 23 Python
Python logging模块原理解析及应用
Aug 13 Python
基于Python爬取51cto博客页面信息过程解析
Aug 25 Python
Python调用飞书发送消息的示例
Nov 10 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
《Re:从零开始的异世界生活》剧情体验,手游新作定名
2020/04/09 日漫
跟我学小偷程序之成功偷取首页(第三天)
2006/10/09 PHP
Window 7/XP 安装Apache 2.4与PHP 5.4 的过程详解
2013/06/02 PHP
php批量上传的实现代码
2013/06/09 PHP
Php连接及读取和写入mysql数据库的常用代码
2014/08/11 PHP
php解析xml 的四种简单方法(附实例)
2016/07/11 PHP
php中使用array_filter()函数过滤数组实例讲解
2021/03/03 PHP
jscript之Open an Excel Spreadsheet
2007/06/13 Javascript
读jQuery之八 包装事件对象
2011/06/21 Javascript
jQuery操作select的实例代码
2012/06/14 Javascript
javascript实现table选中的行以指定颜色高亮显示的方法
2015/05/13 Javascript
JS实现动态生成表格并提交表格数据向后端
2020/11/25 Javascript
Javascript 字符串模板的简单实现
2016/02/13 Javascript
深入剖析JavaScript面向对象编程
2016/07/12 Javascript
socket.io学习教程之基本应用(二)
2017/04/29 Javascript
JavaScript简单拖拽效果(1)
2017/05/17 Javascript
React组件refs的使用详解
2018/02/09 Javascript
jQuery实现获取及设置CSS样式操作详解
2018/09/05 jQuery
vue双向绑定及观察者模式详解
2019/03/19 Javascript
使用 vue 实例更好的监听事件及vue实例的方法
2019/04/22 Javascript
JS原型对象操作实例分析
2020/06/06 Javascript
Vue中使用JsonView来展示Json树的实例代码
2020/11/16 Javascript
js数组的基本使用总结
2021/01/18 Javascript
python-opencv 将连续图片写成视频格式的方法
2019/01/08 Python
flask框架自定义过滤器示例【markdown文件读取和展示功能】
2019/11/08 Python
使用python 计算百分位数实现数据分箱代码
2020/03/03 Python
解决pyPdf和pyPdf2在合并pdf时出现异常的问题
2020/04/03 Python
h5移动端调用支付宝、微信支付的实现
2020/06/08 HTML / CSS
英国蜡烛、蜡烛配件和家居香氛购买网站:Yankee Candle
2018/12/12 全球购物
毕业生的自我鉴定
2013/10/29 职场文书
店长岗位职责
2013/11/21 职场文书
应聘编辑自荐信范文
2014/03/12 职场文书
考核工作实施方案
2014/03/30 职场文书
保护环境倡议书500字
2014/05/19 职场文书
捐款通知怎么写
2015/04/24 职场文书
熟背这些句子,让您的英语口语突飞猛进(135句)
2019/09/06 职场文书