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获取GY-85九轴模块信息示例
Dec 05 Python
在Python中使用poplib模块收取邮件的教程
Apr 29 Python
简单分析Python中用fork()函数生成的子进程
May 04 Python
设计模式中的原型模式在Python程序中的应用示例
Mar 02 Python
Python的Flask框架标配模板引擎Jinja2的使用教程
Jul 12 Python
教你用Type Hint提高Python程序开发效率
Aug 08 Python
python操作xlsx文件的包openpyxl实例
May 03 Python
python儿童学游戏编程知识点总结
Jun 03 Python
Win10下Python3.7.3安装教程图解
Jul 08 Python
解决python彩色螺旋线绘制引发的问题
Nov 23 Python
Python析构函数__del__定义原理解析
Nov 20 Python
python学习之panda数据分析核心支持库
May 07 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与ASP
2006/10/09 PHP
PHP 作用域解析运算符(::)
2010/07/27 PHP
使用ThinkPHP+Uploadify实现图片上传功能
2014/06/26 PHP
php中filter_input函数用法分析
2014/11/15 PHP
php发送邮件的问题详解
2015/06/22 PHP
详解PHP的Laravel框架中Eloquent对象关系映射使用
2016/02/26 PHP
PHP读取并输出XML文件数据的简单实现方法
2017/12/22 PHP
基于jquery实现状态限定编辑的代码
2012/02/11 Javascript
jquery选择器之层级过滤选择器详解
2014/01/27 Javascript
jquery插件lazyload.js延迟加载图片的使用方法
2014/02/19 Javascript
jquery的attr方法禁用表单元素禁用输入内容
2014/06/23 Javascript
JavaScript获取伪元素(Pseudo-Element)属性的方法技巧
2015/03/13 Javascript
jQuery实现首页图片淡入淡出效果的方法
2015/06/10 Javascript
JavaScript的代码编写格式规范指南
2015/12/07 Javascript
JavaScript基于activexobject连接远程数据库SQL Server 2014的方法
2017/07/12 Javascript
js编写简单的聊天室功能
2017/08/17 Javascript
JS实现换肤功能的方法实例详解
2019/01/30 Javascript
使用konva和vue-konva库实现拖拽滑块验证功能
2020/04/27 Javascript
JavaScript进阶(三)闭包原理与用法详解
2020/05/09 Javascript
js实现飞机大战小游戏
2020/08/26 Javascript
合并百度影音的离线数据( with python 2.3)
2015/08/04 Python
python实战之实现excel读取、统计、写入的示例讲解
2018/05/02 Python
对python中的argv和argc使用详解
2018/12/15 Python
python 实现交换两个列表元素的位置示例
2019/06/26 Python
python getpass实现密文实例详解
2019/09/24 Python
Python3如何对urllib和urllib2进行重构
2019/11/25 Python
keras之权重初始化方式
2020/05/21 Python
CSS3实现DIV圆角效果完整代码
2012/10/10 HTML / CSS
移动web模拟客户端实现多方框输入密码效果【附代码】
2016/03/25 HTML / CSS
一文彻底解决HTML5页面中长按保存图片功能
2019/06/10 HTML / CSS
幼儿园大班区域活动总结
2014/07/09 职场文书
高中学生自我评价范文
2014/09/23 职场文书
个人简历自我评价怎么写
2015/03/10 职场文书
公司表扬信格式
2015/05/04 职场文书
2015年度工程师评职称工作总结
2015/10/14 职场文书
某某店铺的开业庆典主持词范本
2019/11/25 职场文书