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 28 Python
一些Python中的二维数组的操作方法
May 02 Python
基于python脚本实现软件的注册功能(机器码+注册码机制)
Oct 09 Python
对Python3 pyc 文件的使用详解
Feb 16 Python
python try 异常处理(史上最全)
Mar 07 Python
基于python实现的百度音乐下载器python pyqt改进版(附代码)
Aug 05 Python
python selenium爬取斗鱼所有直播房间信息过程详解
Aug 09 Python
python函数修饰符@的使用方法解析
Sep 02 Python
python如何使用jt400.jar包代码实例
Dec 20 Python
3分钟看懂Python后端必须知道的Django的信号机制
Jul 26 Python
Pygame框架实现飞机大战
Aug 07 Python
利用Python+OpenCV三步去除水印
May 28 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短信接口代码
2016/05/13 PHP
Ext 表单布局实例代码
2009/04/30 Javascript
js 对象是否存在判断
2009/07/15 Javascript
JavaScript写的一个DIV 弹出网页对话框
2009/08/14 Javascript
JavaScript(js)设置默认输入焦点(focus)
2012/12/28 Javascript
IE关闭时判断及AJAX注销案例学习
2013/02/18 Javascript
常见表单重复提交问题整理及解决方法
2013/11/13 Javascript
jquery中交替点击事件toggle方法的使用示例
2013/12/08 Javascript
js简单的点击返回顶部效果实现方法
2015/04/10 Javascript
JS实现的Select三级下拉菜单代码
2015/08/20 Javascript
js判断当前页面用什么浏览器打开的方法
2016/01/06 Javascript
举例讲解jQuery对DOM元素的向上遍历、向下遍历和水平遍历
2016/07/07 Javascript
基于JavaScript实现轮播图代码
2016/07/14 Javascript
AngularJS Phonecat实例讲解
2016/11/21 Javascript
基于jPlayer三分屏的制作方法
2016/12/21 Javascript
Bootstrap 响应式实用工具实例详解
2017/03/29 Javascript
Vue-router 类似Vuex实现组件化开发的示例
2017/09/15 Javascript
jQuery.Sumoselect插件实现下拉复选框效果
2017/11/09 jQuery
vue3.0自定义指令(drectives)知识点总结
2020/12/27 Vue.js
python发布模块的步骤分享
2014/02/21 Python
用Python展示动态规则法用以解决重叠子问题的示例
2015/04/02 Python
连接Python程序与MySQL的教程
2015/04/29 Python
python脚本实现数据导出excel格式的简单方法(推荐)
2016/12/30 Python
Python 绘图和可视化详细介绍
2017/02/11 Python
Python Flask-web表单使用详解
2017/11/18 Python
对numpy和pandas中数组的合并和拆分详解
2018/04/11 Python
tensorflow对图像进行拼接的例子
2020/02/05 Python
pytorch实现从本地加载 .pth 格式模型
2020/02/14 Python
12个不为大家熟知的HTML5设计小技巧
2016/06/02 HTML / CSS
html5调用app分享功能示例(WebViewJavascriptBridge)
2018/03/21 HTML / CSS
美国顶级防滑鞋:Shoes For Crews
2017/03/27 全球购物
美国睫毛、眉毛精华液领导品牌:RevitaLash Cosmetics
2018/03/26 全球购物
英国顶级珠宝品牌之家:John Greed
2018/06/09 全球购物
电气自动化大学生求职信
2013/10/16 职场文书
建筑自我鉴定
2013/10/19 职场文书
运动会口号霸气押韵
2015/12/24 职场文书