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 相关文章推荐
Djang中静态文件配置方法
Jul 30 Python
学习python 之编写简单乘法运算题
Feb 27 Python
python中numpy的矩阵、多维数组的用法
Feb 05 Python
Python Numpy 数组的初始化和基本操作
Mar 13 Python
Python3.5基础之函数的定义与使用实例详解【参数、作用域、递归、重载等】
Apr 26 Python
Python可迭代对象操作示例
May 07 Python
Django-rest-framework中过滤器的定制实例
Apr 01 Python
python由已知数组快速生成新数组的方法
Apr 08 Python
简单了解python列表和元组的区别
May 14 Python
tensorflow 20:搭网络,导出模型,运行模型的实例
May 26 Python
Python基于Opencv识别两张相似图片
Apr 25 Python
Python OpenCV超详细讲解调整大小与图像操作的实现
Apr 02 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调用数据库的存贮过程!
2006/10/09 PHP
PHP中函数内引用全局变量的方法
2008/10/20 PHP
Thinkphp 框架扩展之行为扩展原理与实现方法分析
2020/04/23 PHP
初学JavaScript第二章
2008/09/30 Javascript
javascript脚本编程解决考试分数统计问题
2008/10/18 Javascript
IE和Firefox的Javascript兼容性总结[推荐收藏]
2011/10/19 Javascript
ExtJS下书写动态生成的xml(兼容火狐)
2013/04/02 Javascript
基于jQuery实现图片的前进与后退功能
2013/04/24 Javascript
JavaScript阻止事件冒泡示例分享
2014/12/28 Javascript
自己动手手写jQuery插件总结
2015/01/20 Javascript
JavaScript中数据结构与算法(四):串(BF)
2015/06/19 Javascript
jQuery插件Validate实现自定义校验结果样式
2016/01/18 Javascript
jQuery.cookie.js实现记录最近浏览过的商品功能示例
2017/01/23 Javascript
jquery.validate表单验证插件使用详解
2017/06/21 jQuery
js匿名函数使用&amp;传参(实例)
2017/09/08 Javascript
layer实现关闭弹出层刷新父界面功能详解
2017/11/15 Javascript
使用post方法实现json往返传输数据的方法
2019/03/30 Javascript
[52:14]VG vs Serenity 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
python魔法方法-属性转换和类的表示详解
2016/07/22 Python
详解Python中for循环是如何工作的
2017/06/30 Python
django2.2安装错误最全的解决方案(小结)
2019/09/24 Python
Python基础之字符串操作常用函数集合
2020/02/09 Python
Python基于QQ邮箱实现SSL发送
2020/04/26 Python
python基于爬虫+django,打造个性化API接口
2021/01/21 Python
泰国的头号网上婴儿用品店:Motherhood.co.th
2019/04/09 全球购物
沙特阿拉伯电子产品和家用电器购物网站:Black Box
2019/07/24 全球购物
Perfume’s Club中文官网:西班牙美妆在线零售品牌
2020/08/24 全球购物
师范大学音乐表演专业求职信
2013/10/23 职场文书
高中微机老师自我鉴定
2014/02/16 职场文书
高中美术教师事迹材料
2014/08/22 职场文书
小学向国旗敬礼活动方案
2014/09/27 职场文书
实习生辞职信范文
2015/03/02 职场文书
2015企业年终工作总结范文
2015/05/27 职场文书
mysql外连接与内连接查询的不同之处
2021/06/03 MySQL
Python提取PDF指定内容并生成新文件
2021/06/09 Python
Spring Cloud Netflix 套件中的负载均衡组件 Ribbon
2022/04/13 Java/Android