Python批量生成特定尺寸图片及图画任意文字的实例


Posted in Python onJanuary 30, 2019

因为工作需要生成各种大小的图片,所以写了个小脚本,顺便支持了下图画文字内容。

具体代码如下:

from PIL import Image, ImageDraw, ImageFont
'''
  Auth: Xiaowu Chen
  Note: Please install [pillow] library before run this script.
'''
 
 
def draw_image(new_img, text, show_image=False):
  text = str(text)
  draw = ImageDraw.Draw(new_img)
  img_size = new_img.size
  draw.line((0, 0) + img_size, fill=128)
  draw.line((0, img_size[1], img_size[0], 0), fill=128)
 
  font_size = 40
  fnt = ImageFont.truetype('arial.ttf', font_size)
  fnt_size = fnt.getsize(text)
  while fnt_size[0] > img_size[0] or fnt_size[0] > img_size[0]:
    font_size -= 5
    fnt = ImageFont.truetype('arial.ttf', font_size)
    fnt_size = fnt.getsize(text)
 
  x = (img_size[0] - fnt_size[0]) / 2
  y = (img_size[1] - fnt_size[1]) / 2
  draw.text((x, y), text, font=fnt, fill=(255, 0, 0))
 
  if show_image:
    new_img.show()
  del draw
 
 
def new_image(width, height, text='default', color=(100, 100, 100, 255), show_image=False):
  new_img = Image.new('RGBA', (int(width), int(height)), color)
  draw_image(new_img, text, show_image)
  new_img.save(r'%s_%s_%s.png' % (width, height, text))
  del new_img
 
 
def new_image_with_file(fn):
  with open(fn, encoding='utf-8') as f:
    for l in f:
      l = l.strip()
      if l:
        ls = l.split(',')
        if '#' == l[0] or len(ls) < 2:
          continue
 
        new_image(*ls)
 
 
if '__main__' == __name__:
  new_image(400, 300, 'hello world any size', show_image=True)
  # new_image_with_file('image_data.txt')

如果你需要批量的话,批量数据文件的格式如下:

#width,height,text
200,200,hello
300,255,world

执行后的效果如下:

Python批量生成特定尺寸图片及图画任意文字的实例

以上这篇Python批量生成特定尺寸图片及图画任意文字的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python和pyqt实现360的CLable控件
Feb 21 Python
Python聊天室实例程序分享
Jan 05 Python
Python实现的多进程和多线程功能示例
May 29 Python
Python抽象和自定义类定义与用法示例
Aug 23 Python
超简单的Python HTTP服务
Jul 22 Python
django如何通过类视图使用装饰器
Jul 24 Python
python 数据生成excel导出(xlwt,wlsxwrite)代码实例
Aug 23 Python
对python中return与yield的区别详解
Mar 12 Python
Python参数传递机制传值和传引用原理详解
May 22 Python
Python configparser模块操作代码实例
Jun 08 Python
python字符串拼接+和join的区别详解
Dec 03 Python
Elasticsearch 聚合查询和排序
Apr 19 Python
理想高通滤波实现Python opencv示例
Jan 30 #Python
对DataFrame数据中的重复行,利用groupby累加合并的方法详解
Jan 30 #Python
WIn10+Anaconda环境下安装PyTorch(避坑指南)
Jan 30 #Python
对dataframe数据之间求补集的实例详解
Jan 30 #Python
如何在Django中添加没有微秒的 DateTimeField 属性详解
Jan 30 #Python
Pandas统计重复的列里面的值方法
Jan 30 #Python
自学python的建议和周期预算
Jan 30 #Python
You might like
php minixml详解
2008/07/19 PHP
php线性表顺序存储实现代码(增删查改)
2012/02/16 PHP
JavaScript中使用构造器创建对象无需new的情况说明
2012/03/01 Javascript
javascript图像处理—仿射变换深度理解
2013/01/16 Javascript
图标线性回归斜着移动到指定的位置
2013/08/16 Javascript
JS 有趣的eval优化输入验证实例代码
2013/09/22 Javascript
js实现键盘控制DIV移动的方法
2015/01/10 Javascript
JS实现字符串转日期并比较大小实例分析
2015/12/09 Javascript
JavaScript代码生成PDF文件的方法
2016/02/26 Javascript
JavaScript数组的定义及数字操作技巧
2016/06/06 Javascript
Javascript点击按钮随机改变数字与其颜色
2016/09/01 Javascript
基于JS实现网页中的选项卡(两种方法)
2017/06/16 Javascript
jQuery EasyUI开发技巧总结
2017/09/26 jQuery
Bootstrap4 gulp 配置详解
2019/01/06 Javascript
超轻量级的js时间库miment使用解析
2019/08/02 Javascript
vue.js+elementUI实现点击左右箭头切换头像功能(类似轮播图效果)
2019/09/05 Javascript
JavaScript中break、continue和return的用法区别实例分析
2020/03/02 Javascript
Python用sndhdr模块识别音频格式详解
2018/01/11 Python
Python 查看文件的读写权限方法
2018/01/23 Python
单链表反转python实现代码示例
2018/02/08 Python
python定时检测无响应进程并重启的实例代码
2019/04/22 Python
python pygame实现五子棋小游戏
2020/10/26 Python
Django Celery异步任务队列的实现
2019/07/24 Python
Python tkinter制作单机五子棋游戏
2020/09/14 Python
HTML5中使用postMessage实现两个网页间传递数据
2016/06/22 HTML / CSS
25道Java面试题集合
2013/05/21 面试题
PyQt QMainWindow的使用示例
2021/03/24 Python
《音乐之都维也纳》教学反思
2014/04/16 职场文书
志愿者活动总结
2014/04/28 职场文书
应用心理学专业求职信
2014/08/04 职场文书
贷款担保书
2015/01/20 职场文书
预备党员自我评价范文
2015/03/04 职场文书
2015年学校政教处工作总结
2015/05/26 职场文书
新农村建设指导员工作总结
2015/08/13 职场文书
python process模块的使用简介
2021/05/14 Python
Python Django框架介绍之模板标签及模板的继承
2021/05/27 Python