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在控制台输出进度条的方法
Jun 20 Python
Django中对通过测试的用户进行限制访问的方法
Jul 23 Python
python实现数独游戏 java简单实现数独游戏
Mar 30 Python
利用Python半自动化生成Nessus报告的方法
Mar 19 Python
pandas 选取行和列数据的方法详解
Aug 08 Python
python批量读取文件名并写入txt文件中
Sep 05 Python
python图形绘制奥运五环实例讲解
Sep 14 Python
Pytorch释放显存占用方式
Jan 13 Python
Pyecharts地图显示不完成问题解决方案
May 11 Python
最简单的matplotlib安装教程(小白)
Jul 28 Python
MoviePy常用剪辑类及Python视频剪辑自动化
Dec 18 Python
Python装饰器的练习题
Nov 23 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 中文处理函数集合
2008/08/27 PHP
用PHP实现 上一篇、下一篇的代码
2012/09/29 PHP
jQuery+php实现ajax文件即时上传的详解
2013/06/17 PHP
php环境下利用session防止页面重复刷新的具体实现
2014/01/09 PHP
Laravel学习教程之从入口到输出过程详解
2017/08/27 PHP
PHP实现模拟http请求的方法分析
2017/12/20 PHP
jQuery中将函数赋值给变量的调用方法
2012/03/23 Javascript
javascript中[]和{}对象使用介绍
2013/03/20 Javascript
浅析JavaScript中的类型和对象
2013/11/29 Javascript
JS+CSS相对定位实现的下拉菜单
2015/10/06 Javascript
BootStrap无限级分类(无限极分类封装版)
2016/08/26 Javascript
微信小程序链接传参并跳转新页面
2016/11/29 Javascript
js禁止浏览器的回退事件
2017/04/20 Javascript
IntersectionObserver实现图片懒加载的示例
2017/09/29 Javascript
AngularJS上传文件的示例代码
2018/11/10 Javascript
微信小程序事件对象中e.target和e.currentTarget的区别详解
2019/05/08 Javascript
云服务器部署Node.js项目的方法步骤(小白系列)
2020/03/23 Javascript
[01:21]2018DOTA2亚洲邀请赛4.5采访 打DOTA2也能有女朋友?
2018/04/06 DOTA
python进阶教程之循环相关函数range、enumerate、zip
2014/08/30 Python
Python中的两个内置模块介绍
2015/04/05 Python
简单理解Python中基于生成器的状态机
2015/04/13 Python
numpy使用技巧之数组过滤实例代码
2018/02/03 Python
Django上线部署之IIS的配置方法
2019/08/22 Python
在tensorflow中设置保存checkpoint的最大数量实例
2020/01/21 Python
Django多数据库配置及逆向生成model教程
2020/03/28 Python
通过自学python能找到工作吗
2020/06/21 Python
解析Python 偏函数用法全方位实现
2020/06/26 Python
python 读取、写入txt文件的示例
2020/09/27 Python
英国领先的汽车轮胎和快速健康中心:Kwik Fit
2017/10/29 全球购物
供应链金融服务方案
2014/05/25 职场文书
2014年中班下学期工作总结
2014/12/11 职场文书
2015年六一儿童节活动总结
2015/02/11 职场文书
2015年政治教研组工作总结
2015/07/22 职场文书
奇妙的 CSS shapes(CSS图形)
2021/04/05 HTML / CSS
MySQL infobright的安装步骤
2021/04/07 MySQL
世界十大评分最高的动漫,CLANNAD上榜,第八赚足人们眼泪
2022/03/18 日漫