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中使用成员运算符的示例
May 13 Python
Python爬虫之xlml解析库(全面了解)
Aug 08 Python
Python+matplotlib实现计算两个信号的交叉谱密度实例
Jan 08 Python
利用Python写一个爬妹子的爬虫
Jun 08 Python
Python格式化日期时间操作示例
Jun 28 Python
Python实现查询某个目录下修改时间最新的文件示例
Aug 29 Python
使用PyQtGraph绘制精美的股票行情K线图的示例代码
Mar 14 Python
Django集成CAS单点登录的方法示例
Jun 10 Python
python开发实例之Python的Twisted框架中Deferred对象的详细用法与实例
Mar 19 Python
基于django2.2连oracle11g解决版本冲突的问题
Jul 02 Python
Python datetime 如何处理时区信息
Sep 02 Python
实操Python爬取觅知网素材图片示例
Nov 27 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
全国FM电台频率大全 - 25 云南省
2020/03/11 无线电
虫族 Zerg 魔法科技
2020/03/14 星际争霸
11个PHP 分页脚本推荐
2011/08/15 PHP
PHP新手用的Insert和Update语句构造类
2012/03/31 PHP
PHP常见漏洞攻击分析
2016/02/21 PHP
jquery.cvtooltip.js 基于jquery的气泡提示插件
2010/11/19 Javascript
用Jquery实现多级下拉框无刷新的联动
2010/12/22 Javascript
jquerymobile checkbox及时刷新才能获取其准确值
2012/04/14 Javascript
提高jQuery性能的十个诀窍
2013/11/14 Javascript
javascript中对Attr(dom中属性)的操作示例讲解
2013/12/02 Javascript
前端必备神器 Snap.svg 弹动效果
2014/11/10 Javascript
DOM事件阶段以及事件捕获与事件冒泡先后执行顺序(图文详解)
2015/08/18 Javascript
实现JavaScript的组成----BOM和DOM详解
2016/05/18 Javascript
清除输入框内的空格
2016/12/21 Javascript
深入理解javascript中的 “this”
2017/01/17 Javascript
详解React Native网络请求fetch简单封装
2017/08/10 Javascript
jQuery简单判断值是否存在于数组中的方法示例
2018/04/17 jQuery
jQuery事件blur()方法的使用实例讲解
2019/03/30 jQuery
一个Java程序猿眼中的前后端分离以及Vue.js入门(推荐)
2019/04/19 Javascript
react quill中图片上传由默认转成base64改成上传到服务器的方法
2019/10/30 Javascript
vue实现div单选多选功能
2020/07/16 Javascript
详解微信小程序「渲染层网络层错误」的解决方法
2021/01/06 Javascript
[01:04:05]Mineski vs TNC 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
使用python进行拆分大文件的方法
2018/12/10 Python
python实现银行实战系统
2020/02/26 Python
Python修改DBF文件指定列
2020/12/19 Python
利用CSS3 动画 绘画 圆形动态时钟
2018/03/20 HTML / CSS
机械工程系毕业生求职信
2013/09/27 职场文书
实习求职信
2013/12/01 职场文书
幼儿园评语大全
2014/04/17 职场文书
宣传工作经验材料
2014/06/02 职场文书
教师自查自纠材料
2014/10/14 职场文书
2014年职称评定工作总结
2014/11/26 职场文书
2014年医院党建工作总结
2014/12/20 职场文书
vue backtop组件的实现完整代码
2021/04/07 Vue.js
抖音动画片,皮皮虾,《治愈系》动画在用这首REMIX作为背景音乐,Anak ,The last world with you完整版
2022/03/16 杂记