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操作mongodb根据_id查询数据的实现方法
May 20 Python
Python实现批量更换指定目录下文件扩展名的方法
Sep 19 Python
教你用Python脚本快速为iOS10生成图标和截屏
Sep 22 Python
python 使用get_argument获取url query参数
Apr 28 Python
python tensorflow学习之识别单张图片的实现的示例
Feb 09 Python
python微信跳一跳系列之棋子定位颜色识别
Feb 26 Python
python使用socket创建tcp服务器和客户端
Apr 12 Python
Pycharm导入Python包,模块的图文教程
Jun 13 Python
python 字典修改键(key)的几种方法
Aug 10 Python
opencv python统计及绘制直方图的方法
Jan 21 Python
python实现扫描ip地址的小程序
Apr 16 Python
Python 字典一个键对应多个值的方法
Sep 29 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传输数据的代码
2007/11/13 PHP
提高PHP性能的编码技巧以及性能优化详细解析
2013/08/24 PHP
PHP中Header使用的HTTP协议及常用方法小结
2014/11/04 PHP
php以post形式发送xml的方法
2014/11/04 PHP
PHP单例模式详解及实例代码
2016/12/21 PHP
jQuery学习4 浏览器的事件模型
2010/02/07 Javascript
Jquery之美中不足小结
2011/02/16 Javascript
JQuery为textarea添加maxlength属性并且兼容IE
2013/04/25 Javascript
用js一次改变多个input的readonly属性值的方法
2014/06/11 Javascript
Node.js实现在目录中查找某个字符串及所在文件
2014/09/03 Javascript
JavaScript中用sort()方法对数组元素进行排序的操作
2015/06/09 Javascript
jquery获取当前元素索引值用法实例
2015/06/10 Javascript
基于JQuery实现仿网易邮箱全屏动感滚动插件fullPage
2015/09/20 Javascript
javascript绘制漂亮的心型线效果完整实例
2016/02/02 Javascript
vue双向绑定的简单实现
2016/12/22 Javascript
微信小程序 增、删、改、查操作实例详解
2017/01/13 Javascript
详解vue中引入stylus及报错解决方法
2017/09/22 Javascript
vue中动态设置meta标签和title标签的方法
2018/07/11 Javascript
vue拖拽组件使用方法详解
2018/12/01 Javascript
JavaScript中十种一步拷贝数组的方法实例详解
2019/04/22 Javascript
JS实现继承的几种常用方式示例
2019/06/22 Javascript
[55:02]2014 DOTA2国际邀请赛中国区预选赛 HGT VS Orenda
2014/05/21 DOTA
[01:07:57]DOTA2-DPC中国联赛 正赛 Ehome vs Magma BO3 第二场 1月19日
2021/03/11 DOTA
python实现根据主机名字获得所有ip地址的方法
2015/06/28 Python
深入浅出学习python装饰器
2017/09/29 Python
Python编程求解二叉树中和为某一值的路径代码示例
2018/01/04 Python
Python wxPython库消息对话框MessageDialog用法示例
2018/09/03 Python
浅析Python四种数据类型
2018/09/26 Python
如何使用django的MTV开发模式返回一个网页
2019/07/22 Python
解决TensorFlow训练内存不断增长,进程被杀死问题
2020/02/05 Python
H5 canvas实现贪吃蛇小游戏
2017/07/28 HTML / CSS
12岁生日感言
2014/01/21 职场文书
大学生秋游活动方案
2014/02/17 职场文书
2014乡镇“三八”国际劳动妇女节活动总结
2014/03/01 职场文书
横幅标语大全
2014/06/17 职场文书
springboot集成redis存对象乱码的问题及解决
2022/06/16 Java/Android