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选课系统开发程序
Sep 02 Python
python文本数据相似度的度量
Mar 12 Python
Python实现发送与接收邮件的方法详解
Mar 28 Python
Python逐行读取文件中内容的简单方法
Feb 26 Python
Pytorch中实现只导入部分模型参数的方式
Jan 02 Python
Python利用逻辑回归模型解决MNIST手写数字识别问题详解
Jan 14 Python
如何查看Django ORM执行的SQL语句的实现
Apr 20 Python
在TensorFlow中实现矩阵维度扩展
May 22 Python
Python HTMLTestRunner测试报告view按钮失效解决方案
May 25 Python
keras和tensorflow使用fit_generator 批次训练操作
Jul 03 Python
基于python实现生成指定大小txt文档
Jul 20 Python
Python万能模板案例之matplotlib绘制甘特图
Apr 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
咖啡的化学
2021/03/03 咖啡文化
模拟flock实现文件锁定
2007/02/14 PHP
php 获取今日、昨日、上周、本月的起始时间戳和结束时间戳的方法
2013/09/28 PHP
ThinkPHP查询中的魔术方法简述
2014/06/25 PHP
smarty模板引擎之配置文件数据和保留数据
2015/03/30 PHP
PHP SOCKET编程详解
2015/05/22 PHP
Laravel框架自定义公共函数的引入操作示例
2019/04/16 PHP
Javascript valueOf 使用方法
2008/12/28 Javascript
jquery中使用ajax获取远程页面信息
2011/11/13 Javascript
异步JS框架的作用以及实现方法
2015/10/29 Javascript
js获取元素的标签名实现方法
2016/10/08 Javascript
详解javascript中对数据格式化的思考
2017/01/23 Javascript
20个必会的JavaScript面试题(小结)
2019/07/02 Javascript
uni app仿微信顶部导航条功能
2019/09/17 Javascript
Vue data的数据响应式到底是如何实现的
2020/02/11 Javascript
vue 修改 data 数据问题并实时显示操作
2020/09/07 Javascript
[58:15]2018DOTA2亚洲邀请赛 4.1 小组赛 A组 NB vs Liquid
2018/04/02 DOTA
[32:56]完美世界DOTA2联赛PWL S3 Rebirth vs CPG 第二场 12.11
2020/12/16 DOTA
举例讲解Python中的身份运算符的使用方法
2015/10/13 Python
python文本数据相似度的度量
2018/03/12 Python
Python文本处理之按行处理大文件的方法
2018/04/09 Python
Python实现生成密码字典的方法示例
2019/09/02 Python
Pytorch使用MNIST数据集实现基础GAN和DCGAN详解
2020/01/10 Python
腾讯公司的一个sql题
2013/01/22 面试题
经济信息管理专业大学生求职信
2013/09/27 职场文书
家具厂厂长岗位职责
2014/01/01 职场文书
先进德育工作者事迹材料
2014/01/24 职场文书
表演方阵解说词
2014/02/08 职场文书
客服专员岗位职责
2014/02/28 职场文书
运动会口号16字
2014/06/07 职场文书
档案接收函格式
2015/01/30 职场文书
满月酒邀请函
2015/01/30 职场文书
财务人员岗位职责
2015/02/03 职场文书
2015年度高中教师工作总结
2015/05/26 职场文书
学习商务礼仪心得体会
2016/01/22 职场文书
一波干货,会议主持词开场白范文
2019/05/06 职场文书