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抓取网页图片并放到指定文件夹
Apr 24 Python
Python对文件操作知识汇总
May 15 Python
Python3中条件控制、循环与函数的简易教程
Nov 21 Python
python自动发邮件库yagmail的示例代码
Feb 23 Python
Python3实现对列表按元组指定列进行排序的方法分析
Dec 22 Python
利用Pyhton中的requests包进行网页访问测试的方法
Dec 26 Python
Python学习笔记之lambda表达式用法详解
Aug 08 Python
基于MATLAB和Python实现MFCC特征参数提取
Aug 13 Python
Python大数据之网络爬虫的post请求、get请求区别实例分析
Nov 16 Python
pandas中的ExcelWriter和ExcelFile的实现方法
Apr 24 Python
python 图像判断,清晰度(明暗),彩色与黑白实例
Jun 04 Python
详解使用python爬取抖音app视频(appium可以操控手机)
Jan 26 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下利用curl判断远程文件是否存在的实现代码
2011/10/08 PHP
采集邮箱的php代码(抓取网页中的邮箱地址)
2012/07/17 PHP
如何使用“PHP” 彩蛋进行敏感信息获取
2013/08/07 PHP
PHP写的资源下载防盗链类分享
2014/05/12 PHP
PHP的引用详解
2015/02/22 PHP
php上传文件并显示上传进度的方法
2015/03/24 PHP
PHP实现的一致性哈希算法完整实例
2015/11/14 PHP
php生成高清缩略图实例详解
2015/12/07 PHP
php 类中的常量、静态属性、非静态属性的区别
2017/04/09 PHP
javascript 控制弹出窗口
2007/04/10 Javascript
javascript简单事件处理和with用法介绍
2013/09/16 Javascript
基于jQuery倒计时插件实现团购秒杀效果
2016/05/13 Javascript
JavaScript中setTimeout的那些事儿
2016/11/14 Javascript
JavaScript实现简单的双色球(实例讲解)
2017/07/31 Javascript
js中的闭包学习心得
2018/02/06 Javascript
jQuery实现为动态添加的元素绑定事件实例分析
2018/09/07 jQuery
vue filter 完美时间日期格式的代码
2019/08/14 Javascript
在vue中实现禁止屏幕滚动,禁止屏幕滑动
2020/07/22 Javascript
在Python的列表中利用remove()方法删除元素的教程
2015/05/21 Python
python实现上传文件到linux指定目录的方法
2020/01/03 Python
Python tkinter和exe打包的方法
2020/02/05 Python
Python终端输出彩色字符方法详解
2020/02/11 Python
详解HTML5中rel属性的prefetch预加载功能使用
2016/05/06 HTML / CSS
Html5 canvas画图白板踩坑
2020/06/01 HTML / CSS
意大利团购网站:Groupon意大利
2016/10/11 全球购物
摩飞电器俄罗斯官方网站:Morphy Richards俄罗斯
2020/07/30 全球购物
初中三好学生事迹材料
2014/01/13 职场文书
淘宝活动策划方案
2014/02/06 职场文书
开展读书活动总结
2014/06/30 职场文书
对外汉语专业大学生职业生涯规划范文
2014/09/13 职场文书
大三学年自我鉴定范文(3篇)
2014/09/28 职场文书
社保缴纳证明申请书
2014/11/03 职场文书
大学同学聚会感言
2015/07/30 职场文书
运动会广播稿200字
2015/08/19 职场文书
怎么禁用Windows 11快照布局? win11不使用快照布局的技巧
2021/11/21 数码科技
2022漫威和DC电影上映作品
2022/04/05 欧美动漫