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 制作图片转pdf工具
Jan 30 Python
Python 判断文件或目录是否存在的实例代码
Jul 19 Python
python爬虫获取小区经纬度以及结构化地址
Dec 30 Python
用pycharm开发django项目示例代码
Jun 13 Python
python创建学生成绩管理系统
Nov 22 Python
python使用 cx_Oracle 模块进行查询操作示例
Nov 28 Python
Python 内置变量和函数的查看及说明介绍
Dec 25 Python
tensorflow 保存模型和取出中间权重例子
Jan 24 Python
python——全排列数的生成方式
Feb 26 Python
Django如何使用jwt获取用户信息
Apr 21 Python
Python代码,能玩30多款童年游戏!这些有几个是你玩过的
Apr 27 Python
浅谈Python类的单继承相关知识
May 12 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
yii2 commands模式以及配置crontab定时任务的方法
2017/08/19 PHP
laravel框架关于搜索功能的实现
2018/03/15 PHP
jquery BS,dialog控件自适应大小
2009/07/06 Javascript
编写Js代码要注意的几条规则
2010/09/10 Javascript
jQuery 绑定事件到动态创建的元素上的方法实例
2013/08/18 Javascript
JavaScript学习笔记之数组去重
2016/03/23 Javascript
JS hashMap实例详解
2016/05/26 Javascript
js中的eval()函数把含有转义字符的字符串转换成Object对象的方法
2016/12/02 Javascript
BootStrap表单时间选择器详解
2017/05/09 Javascript
layui选项卡效果实现代码
2017/05/19 Javascript
vue实现登录后页面跳转到之前页面
2018/01/07 Javascript
vue-cli3.0 环境变量与模式配置方法
2018/11/08 Javascript
微信小程序MUI导航栏透明渐变功能示例(通过改变rgba的a值实现)
2019/01/24 Javascript
vue发送websocket请求和http post请求的实例代码
2019/07/11 Javascript
layui表格设计以及数据初始化详解
2019/10/26 Javascript
微信小程序实现同时上传多张图片
2020/02/03 Javascript
vue项目在线上服务器访问失败原因分析
2020/08/14 Javascript
利用JS判断元素是否为数组的方法示例
2021/01/08 Javascript
python中 ? : 三元表达式的使用介绍
2013/10/09 Python
python获取元素在数组中索引号的方法
2015/07/15 Python
微信跳一跳小游戏python脚本
2018/01/05 Python
详解Python字典小结
2018/10/20 Python
python设计微型小说网站(基于Django+Bootstrap框架)
2019/07/08 Python
使用TFRecord存取多个数据案例
2020/02/17 Python
Python3中configparser模块读写ini文件并解析配置的用法详解
2020/02/18 Python
Python 使用 environs 库定义环境变量的方法
2020/02/25 Python
pycharm远程连接vagrant虚拟机中mariadb数据库
2020/06/05 Python
Python根据字符串调用函数过程解析
2020/11/05 Python
Python监听剪切板实现方法代码实例
2020/11/11 Python
北美三大旅游网站之一:Travelocity加拿大
2016/08/20 全球购物
ColourPop美国官网:卡拉泡泡,洛杉矶彩妆品牌
2019/04/28 全球购物
您在慕尼黑的跑步商店:Lauf-bar
2019/10/11 全球购物
决心书标准格式
2014/03/11 职场文书
师德承诺书
2015/01/20 职场文书
2015年全国爱耳日活动总结
2015/02/27 职场文书
解决pycharm下载库时出现Failed to install package的问题
2021/09/04 Python