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操作sqlite3快速、安全插入数据(防注入)的实例
Apr 26 Python
Python中的rfind()方法使用详解
May 19 Python
Python实现随机生成有效手机号码及身份证功能示例
Jun 05 Python
python下setuptools的安装详解及No module named setuptools的解决方法
Jul 06 Python
Python对象中__del__方法起作用的条件详解
Nov 01 Python
Python中的类与类型示例详解
Jul 10 Python
详解Python中字符串前“b”,“r”,“u”,“f”的作用
Dec 18 Python
修改Pandas的行或列的名字(重命名)
Dec 18 Python
Python多线程获取返回值代码实例
Feb 17 Python
pycharm无法安装第三方库的问题及解决方法以scrapy为例(图解)
May 09 Python
pandas处理csv文件的方法步骤
Oct 16 Python
Python3使用tesserocr识别字母数字验证码的实现
Jan 29 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算开始时间到过期时间的相隔的天数
2011/01/12 PHP
PHP实现的策略模式示例
2019/03/20 PHP
javascript setTimeout和setInterval 的区别
2009/12/08 Javascript
Extjs学习笔记之五 一个小细节renderTo和applyTo的区别
2010/01/07 Javascript
javascript实现tabs选项卡切换效果(自写原生js)
2013/03/19 Javascript
escape函数解决js中ajax传递中文出现乱码问题
2014/10/30 Javascript
5个书写JavaScript代码的坏习惯,看看你中枪了没?
2014/11/06 Javascript
JS实现动态给图片添加边框的方法
2015/04/01 Javascript
jQuery实现手机号码输入提示功能实例
2015/04/30 Javascript
JS选中checkbox后获取table内一行TD所有数据的方法
2015/07/01 Javascript
JavaScript设计模式经典之命令模式
2016/02/24 Javascript
BOM系列第二篇之定时器requestAnimationFrame
2016/08/17 Javascript
js实现简单的获取验证码按钮效果
2017/03/03 Javascript
JavaScript实现的商品抢购倒计时功能示例
2017/04/17 Javascript
深入理解vue中的$set
2017/06/01 Javascript
Scala解析Json字符串的实例详解
2017/10/11 Javascript
详解如何探测小程序返回到webview页面
2019/05/14 Javascript
[07:39]第一届亚洲邀请赛回顾视频
2017/02/14 DOTA
Windows下python2.7.8安装图文教程
2016/05/26 Python
python框架django基础指南
2016/09/08 Python
python使用RNN实现文本分类
2018/05/24 Python
pandas.DataFrame选取/排除特定行的方法
2018/07/03 Python
TensorFlow实现模型评估
2018/09/07 Python
Python实现弹球小游戏
2020/08/01 Python
工程部经理岗位职责
2013/12/08 职场文书
幼儿园保育员辞职信
2014/01/12 职场文书
酒店行政人事部经理职务说明书
2014/02/26 职场文书
2014植树节活动总结
2014/03/11 职场文书
股票投资建议书
2014/05/19 职场文书
施工安全汇报材料
2014/08/17 职场文书
派出所班子党的群众路线对照检查材料思想汇报
2014/10/01 职场文书
2016年大学生暑假爱心支教活动策划书
2015/11/26 职场文书
2019年作为一名实习生的述职报告
2019/09/29 职场文书
《风不能把阳光打败》读后感3篇
2020/01/06 职场文书
Python开发之QT解决无边框界面拖动卡屏问题(附带源码)
2021/05/27 Python
漫改真人电影「萌系男友是燃燃的橘色」公开先导视觉图
2022/03/21 日漫