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读文件逐行处理的示例代码分享
Dec 27 Python
Python实现队列的方法
May 26 Python
基于asyncio 异步协程框架实现收集B站直播弹幕
Sep 11 Python
基于python爬虫数据处理(详解)
Jun 10 Python
在双python下设置python3为默认的方法
Oct 31 Python
Python基于滑动平均思想实现缺失数据填充的方法
Feb 21 Python
python hash每次调用结果不同的原因
Nov 21 Python
python selenium实现发送带附件的邮件代码实例
Dec 10 Python
python实现密度聚类(模板代码+sklearn代码)
Apr 27 Python
如何一键升级Python所有包
Nov 05 Python
粗暴解决CUDA out of memory的问题
May 22 Python
使用Python开发冰球小游戏
Apr 30 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
从零开始学YII2框架(三)扩展插件yii2-gird
2014/08/20 PHP
php计算整个目录大小的方法
2015/06/19 PHP
PHP批量删除jQuery操作
2017/07/23 PHP
Laravel框架基于中间件实现禁止未登录用户访问页面功能示例
2019/01/17 PHP
为Extjs加加速(javascript加速)
2010/08/19 Javascript
javascript中文本框中输入法切换的问题
2013/12/10 Javascript
JQuery选择器绑定事件及修改内容的方法
2015/01/23 Javascript
js获取元素外链样式的方法
2015/01/27 Javascript
jquery实现图片左右切换的方法
2015/05/07 Javascript
Javascript中arguments用法实例分析
2015/06/13 Javascript
AngularJS实用基础知识_入门必备篇(推荐)
2017/07/10 Javascript
vue-router实现组件间的跳转(参数传递)
2017/11/07 Javascript
Vuejs中使用markdown服务器端渲染的示例
2017/11/22 Javascript
利用不到200行代码写一款属于你自己的js类库
2019/07/08 Javascript
React中获取数据的3种方法及优缺点
2020/02/18 Javascript
[05:29]2014DOTA2国际邀请赛 赛后专访:LGDNewbee顺利过关
2014/07/13 DOTA
基于Linux系统中python matplotlib画图的中文显示问题的解决方法
2017/06/15 Python
Python中跳台阶、变态跳台阶与矩形覆盖问题的解决方法
2018/05/19 Python
对python遍历文件夹中的所有jpg文件的实例详解
2018/12/08 Python
PyQt4实时显示文本内容GUI的示例
2019/06/14 Python
对django中foreignkey的简单使用详解
2019/07/28 Python
基于python实现计算且附带进度条代码实例
2020/03/31 Python
python给视频添加背景音乐并改变音量的具体方法
2020/07/19 Python
英国婴儿及儿童产品商店:TigerParrot
2019/03/04 全球购物
香港彩色隐形眼镜在线商店:Stunninglens(全球免费送货)
2019/05/10 全球购物
Nordgreen美国官网:在线购买极简主义斯堪的纳维亚手表
2019/07/24 全球购物
eBay荷兰购物网站:eBay.nl
2020/06/26 全球购物
几个Linux面试题笔试题
2012/12/01 面试题
志愿者服务感言
2014/02/27 职场文书
质量承诺书范文
2014/03/27 职场文书
海洋科学专业求职信
2014/08/10 职场文书
法人委托书范本
2014/09/15 职场文书
领导干部个人整改措施落实情况汇报
2014/10/29 职场文书
2015年父亲节活动总结
2015/02/12 职场文书
2015小学五年级班主任工作总结
2015/05/21 职场文书
红十字会救护培训简讯
2015/07/20 职场文书