几行代码批量生成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. Owhat sign参数分析

    需求:Owath进行商品购买时,psot提交的参数,有个sign,分析生成的算法. 1)点击商品购买后,进行抓包. 2)搜索sign定位赋值函数,OWAPIParamsDict paramsDictW ...

  2. 1.1 菜单管理 ——MyRapid WinForm快速开发框架-功能介绍

    菜单表数据库设计 可以根据数据表取得树状目录,其中 版本和作者 可以分别对版本和修改人进行追溯 有兴趣的朋友可以尝试再添加一个收藏夹   也是比较常用的功能   这里我没有做这个功能 然后看下菜单编辑 ...

  3. ftp上传文件,上传的文件大小是0

    此问题是最近出现,代码和配置完全没改,试过所有的办法,两天了一直都解决不了,用完弃坑. 防火墙.被动模式主动模式,编码,服务端内存,日志,common-net.jar版本问题,服务端配置,nginx配 ...

  4. 电池中的NTC功能是什么?【转】

    电池的NTC功能是什么 因为可充电电池在不断的循环充电和放电过程中可能会导致电池温度的过高,导致电池原始性能下降.为了保持电池性能,密切监测电池温度非常重要,NTC在充电电池组内部的合适应用中可以起到 ...

  5. unittest---unittest简单介绍

    说起python的单元测试,第一反应肯定就会是unittest,unittest作为python的标准库,很优秀,也被广泛的用到各个项目,但是你们知道吗?python的单元测试并不只有这一个,还有个p ...

  6. SpringBoot启动过程源码分析

    学习博客:SpringBoot时序图分析启动过程

  7. 剑指Offer-45.扑克牌顺子(C++/Java)

    题目: LL今天心情特别好,因为他去买了一副扑克牌,发现里面居然有2个大王,2个小王(一副牌原本是54张^_^)...他随机从中抽出了5张牌,想测测自己的手气,看看能不能抽到顺子,如果抽到的话,他决定 ...

  8. C语言中的顺序点

    C语言盲点1.函数参数的求值顺序依赖于编译器,例如f(a,a++);是先求a++还是求a不一定 2.C语言中的大多数运算符对其操作数的求值顺序也依赖于编译器 警告int i = f() * g();这 ...

  9. Linux系统:centos7下搭建ElasticSearch中间件,常用接口演示

    本文源码:GitHub·点这里 || GitEE·点这里 一.中间件简介 1.基础概念 ElasticSearch是一个基于Lucene的搜索服务器.它提供了一个分布式多用户能力的全文搜索引擎,基于R ...

  10. spring常用注解整理

    参看大佬博客https://www.cnblogs.com/xiaoxi/p/5935009.html