几行代码批量生成authCode

整体步骤:

1.创建图片

2.创建画笔

3.在图片上生成点

4.在图片上画线

5.在图片在画圆

6.在图片在写文本

7.在图片在生成指定字体的文本

代码奉上

#!/usr/bin/env python
# author:Torre Yang
# datetime:2018/9/9 10:18
# 改进:1.自适应调整验证码的数量;2.随机输出字符
import random
import logging
logging.basicConfig(level=logging.INFO)
# 导入Image,ImageDraw,ImageFont模块
from PIL import Image, ImageDraw, ImageFont # strNum 为想要生成的字符数; num为生成的数量
def authCodeMaker(strNum, num):
while(num):
# 定义使用Image类实例化一个长为30 * (strNum - 1),宽为30px,基于RGB的(255,255,255)颜色的图片; 通过控制图片长度来限制字符数量
img1 = Image.new(mode="RGB", size=(30 * (strNum - 1), 30), color=(255, 255, 255))
# 实例化一支画笔
draw1 = ImageDraw.Draw(img1, mode="RGB")
# 定义要使用的字体 ,字体放置程序统计目录目录
font1 = ImageFont.truetype("ALGER.TTF", 28)
# 生成四个字符的验证码, 保存字符串生产文件名
strList = []
for i in range(strNum):
# 每循环一次,从a到z中随机生成一个字母或数字
# 65到90为字母的ASCII码,使用chr把生成的ASCII码转换成字符
# str把生成的数字转换成字符串; 可以将0过滤掉; 由于0和字母O相差不大
allstr = [chr(random.randint(97, 122)), chr(random.randint(65, 90)), str(random.randint(1, 9))]
allstr = ''.join(allstr)
char1 = random.choice(allstr)
strList.append(char1)
# 每循环一次重新生成随机颜色
color1 = (random.randint(0, 255), random.randint(0, 255), random.randint(0, 255))
# 把生成的字母或数字添加到图片上
# 图片长度为30 * (strNum - 1),要生成num个数字或字母则每添加一个,其位置就要向后移动24px
draw1.text([i * 24, 0], char1, color1, font=font1)
# 把生成的图片保存为"strList.png"格式; TIPS:创建你需要保存文件的位置
with open('E:\PyCharmProjects\APP-UI\\authCode\\'+''.join(strList)+".png", "wb") as f:
img1.save(f, format="png")
num = num - 1
logging.info('剩余%d张待生成: '%num +''.join(strList)+'.png') # 测试
if __name__=='__main__':
authCodeMaker(4, 1000)

附件:代码地址 https://github.com/Testworm/app_ui/blob/master/authCode.py

实例:

利用Python几行代码批量生成验证码的更多相关文章

  1. 比PS还好用!Python 20行代码批量抠图

    你是否曾经想将某张照片中的人物抠出来,然后拼接到其他图片上去,从而可以即使你在天涯海角,我也可以到此一游? 很多人学习python,不知道从何学起.很多人学习python,掌握了基本语法过后,不知道在 ...

  2. Python 5 行代码的神奇操作

    Python 语言实现功能直接了当,简明扼要,今天咱们就来一起看看 Python 5 行代码的神奇操作! 1.古典兔子问题 很多人学习python,不知道从何学起.很多人学习python,掌握了基本语 ...

  3. Python 写了一个批量生成文件夹和批量重命名的工具

    Python 写了一个批量生成文件夹和批量重命名的工具 目录 Python 写了一个批量生成文件夹和批量重命名的工具 演示 功能 1. 可以读取excel内容,使用excel单元格内容进行新建文件夹, ...

  4. Python第一行代码

    Python版本:Python 3.6.1 0x01 命令行交互 在交互式环境的提示符>>>下,直接输入代码,按回车,就可以立刻得到代码执行结果.现在,试试输入100+200,看看计 ...

  5. python的random模块(生成验证码)

    python的random模块(生成验证码) random模块常用方法 random.random() #生成0到1之间的随机数,没有参数,float类型 random.randint(1, 3) # ...

  6. Python 1行代码实现文本分类(实战笔记),含代码详细说明及运行结果

    Python 1行代码实现文本分类(实战笔记),含代码详细说明及运行结果 一.详细说明及代码 tc.py =============================================== ...

  7. Python图片处理PIL/pillow/生成验证码/出现KeyError: 和The _imagingft C module is not installed

    最近在用Python开发自己的博客,需要用到Python生成验证码,当然肯定要用到Python的图形处理库PIL,因为我用的是windows. 所以在安装好pil之后就开始写,就按照题目所说出现了Th ...

  8. Python 3 行代码 5 秒抠图的 AI 神器,根本无需 PS

    前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者: 苏克1900 PS:如有需要Python学习资料的小伙伴可以加点击下 ...

  9. Python&R&Matlab:批量生成变量

    在编写程序时,有时我们需要命名相当多的变量,比如x0.x1.x2.....xn,用手一个个打出来是相当麻烦的.那么这时我们就需要批量生成变量了. 解决这个问题的关键在于,'xn'是自动构造出来的字符串 ...

随机推荐

  1. GitLab-怎样使用GitLab托管项目

    场景 Docker Compose部署GitLab服务,搭建自己的代码托管平台(图文教程): https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/det ...

  2. Angular(06)- 为什么数据变化,绑定的视图就会自动更新了?

    这里提一点,前端三大框架(Angular,React,Vue)的数据驱动来更新视图的原理,即 MVVM 的实现. 为什么数据发生变化,绑定的视图就会刷新了呢? 以下是我的个人理解,仅供参考: 在还是 ...

  3. JSP的介绍

    JSP概念 JSP全称java server page,中文含义为java服务端页面.对于jsp的理解需要和另外几个相似的概念连接起来:Html和Servlet.常规的html作为一个静态文本传输,具 ...

  4. 更新阿里yum源并重建缓存

    [第一种方式]1.下载安装wget /如果没有装的话yum install -y wget 2.备份默认的yummv /etc/yum.repos.d /etc/yum.repos.d.backup ...

  5. Linux系统学习 十四、VSFTP服务—配置文件解析、客户端使用

    3.配置文件解析 默认配置选项: 一般情况下不允许匿名用户登录 全局配置选项:(手工添加) listen_address=192.168.4.1             #设置监听地址 listen_ ...

  6. 《Web Development with Go》JWT认证

    时间晚了,先来一版调通的JWT普通认证, 明天再弄一个通过中间件,及gorilla,negroni库的认证, 这样正规些, 但认证通过之后,如何对应权限? 由于jwt-go从2升到3,还有rsa 10 ...

  7. ubuntu vscode 写一个C++程序

    博客转载:https://blog.csdn.net/weixin_43374723/article/details/84064644 Visual studio code是微软发布的一个运行于 Ma ...

  8. swoole比php好在哪里

    直接套用Swoole官网的介绍: PHP的异步.并行.高性能网络通信引擎,使用纯C语言编写,提供了PHP语言的异步多线程服务器,异步TCP/UDP网络客户端,异步MySQL,异步Redis,数据库连接 ...

  9. 【pat】algorithm常用函数整理

    reference is_permutation Test whether range is permutation of another Parameters first1, last1 Input ...

  10. Linux平台安装python的psutil包

    在Linux平台下,pip install psutil 安装python psutil包,出现下面的错误: psutil/_psutil_common.c:9:20: fatal error: Py ...