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 相关文章推荐
fastcgi文件读取漏洞之python扫描脚本
Apr 23 Python
Python实现基于多线程、多用户的FTP服务器与客户端功能完整实例
Aug 18 Python
Python JSON格式数据的提取和保存的实现
Mar 22 Python
详解Python Matplotlib解决绘图X轴值不按数组排序问题
Aug 05 Python
Python 批量刷博客园访问量脚本过程解析
Aug 30 Python
Django学习之文件上传与下载
Oct 06 Python
Python 中的 import 机制之实现远程导入模块
Oct 29 Python
Pycharm2020最新激活码|永久激活(附最新激活码和插件的详细教程)
Sep 29 Python
python map比for循环快在哪
Sep 21 Python
python3中TQDM库安装及使用详解
Nov 18 Python
Django多个app urls配置代码实例
Nov 26 Python
Python自动操作神器PyAutoGUI的使用教程
Jun 16 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 cookie的操作实现代码(登录)
2010/12/29 PHP
php数组转成json格式的方法
2015/03/09 PHP
PHP使用curl_multi实现并发请求的方法示例
2018/04/29 PHP
PHP实现类似题库抽题效果
2018/08/16 PHP
[JS]点出统计器
2020/10/11 Javascript
跨浏览器的 mouseenter mouseleave 以及 compareDocumentPosition的使用说明
2010/05/04 Javascript
js读取本地excel文档数据的代码
2010/11/11 Javascript
JQuery中extend使用介绍
2014/03/13 Javascript
IONIC自定义subheader的最佳解决方案
2016/09/22 Javascript
jQuery监听文件上传实现进度条效果的方法
2016/10/16 Javascript
详解js树形控件—zTree使用总结
2016/12/28 Javascript
在node.js中怎么屏蔽掉favicon.ico的请求
2017/03/01 Javascript
解决jQuery ajax动态新增节点无法触发点击事件的问题
2017/05/24 jQuery
react-navigation 如何判断用户是否登录跳转到登录页的方法
2017/12/01 Javascript
详解小程序横屏方案对比
2020/06/28 Javascript
JS异步宏队列与微队列原理区别详解
2020/07/02 Javascript
[01:51]历届DOTA2国际邀请赛举办地回顾 TI9落地上海
2018/08/26 DOTA
python 中random模块的常用方法总结
2017/07/08 Python
解决tensorflow由于未初始化变量而导致的错误问题
2020/01/06 Python
Django如何使用redis作为缓存
2020/05/21 Python
css3 box-sizing属性使用参考指南
2013/01/08 HTML / CSS
CSS3属性box-sizing使用指南
2014/12/09 HTML / CSS
Evisu官方网站:日本牛仔品牌,时尚街头设计风格
2016/12/30 全球购物
英国男士时尚购物网站:Stuarts London
2017/10/22 全球购物
执行力心得体会
2013/12/31 职场文书
人事科岗位职责范本
2014/03/02 职场文书
奥巴马英文演讲稿
2014/05/15 职场文书
技术负责人任命书
2014/06/05 职场文书
个人委托书范本
2014/09/13 职场文书
2014年祖国生日寄语
2014/09/19 职场文书
公司搬迁通知
2015/04/20 职场文书
社区法制宣传日活动总结
2015/05/05 职场文书
2015年党风廉政建设目标责任书
2015/05/08 职场文书
2016年党员干部廉政承诺书
2016/03/24 职场文书
浅谈CSS不规则边框的生成方案
2021/05/25 HTML / CSS
Alexa停服!网站排名将何去何从?目前还没有替代品。
2022/04/15 杂记