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 相关文章推荐
Django中实现一个高性能计数器(Counter)实例
Jul 09 Python
Python isinstance函数介绍
Apr 14 Python
python实现备份目录的方法
Aug 03 Python
idea创建springMVC框架和配置小文件的教程图解
Sep 18 Python
对matplotlib改变colorbar位置和方向的方法详解
Dec 13 Python
Django 项目重命名的实现步骤解析
Aug 14 Python
Python3将数据保存为txt文件的方法
Sep 12 Python
python flask搭建web应用教程
Nov 19 Python
Python爬取爱奇艺电影信息代码实例
Nov 26 Python
Python字典添加,删除,查询等相关操作方法详解
Feb 07 Python
python实现canny边缘检测
Sep 14 Python
python 实现全球IP归属地查询工具
Dec 18 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中的正则表达式函数介绍
2012/02/27 PHP
深入分析php中接口与抽象类的区别
2013/06/08 PHP
PHP验证码函数代码(简单实用)
2013/09/29 PHP
php实现微信扫码自动登陆与注册功能
2016/09/22 PHP
[转]JS宝典学习笔记
2007/02/07 Javascript
javascript实现二分查找法实现代码
2007/11/12 Javascript
如何用js控制frame的隐藏或显示的解决办法
2013/03/20 Javascript
基于promise.js实现nodejs的promises库
2014/07/06 NodeJs
AngularJS内置指令
2015/02/04 Javascript
jQuery简单倒计时效果完整示例
2016/09/20 Javascript
JS检测数组类型的方法小结
2017/03/14 Javascript
JavaScript基本语法_动力节点Java学院整理
2017/06/26 Javascript
Bootstrap datepicker日期选择器插件使用详解
2017/07/26 Javascript
微信小程序多列选择器range-key使用详解
2020/03/30 Javascript
JavaScript设计模式之代理模式简单实例教程
2018/07/03 Javascript
Vue-Router的使用方法
2018/09/05 Javascript
详解微信小程序框架wepy踩坑记录(与vue对比)
2019/03/12 Javascript
使用taro开发微信小程序遇到的坑总结
2019/04/08 Javascript
layui多iframe页面控制定时器运行的方法
2019/09/05 Javascript
python实现爬虫统计学校BBS男女比例之数据处理(三)
2015/12/31 Python
利用Python如何批量修改数据库执行Sql文件
2018/07/29 Python
浅谈pycharm使用及设置方法
2019/09/09 Python
Python中使用gflags实例及原理解析
2019/12/13 Python
python对数组进行排序,并输出排序后对应的索引值方式
2020/02/28 Python
Pycharm制作搞怪弹窗的实现代码
2021/02/19 Python
时尚设计师手表:The Watch Cabin
2018/10/06 全球购物
Wedgwood英国官方网站:英式精致骨瓷餐具、礼品与生活精品,源于1759年
2019/09/02 全球购物
Theflamel意大利:女士奢华服装、鞋子和配件
2020/01/11 全球购物
数学专业推荐信范文
2013/11/21 职场文书
敬老模范事迹
2014/05/21 职场文书
优秀团干部个人事迹
2014/05/29 职场文书
纪检干部先进事迹材料
2014/08/23 职场文书
党员“四风”方面存在问题及整改措施
2014/09/24 职场文书
毕业典礼主持词
2015/06/29 职场文书
2015秋季开学典礼致辞
2015/07/16 职场文书
MySQL 如何设计统计数据表
2021/06/15 MySQL