前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >利用Python几行代码批量生成验证码

利用Python几行代码批量生成验证码

作者头像
互联网金融打杂
发布2019-12-11 16:45:28
5940
发布2019-12-11 16:45:28
举报

几行代码批量生成authCode

整体步骤:
1.创建图片
2.创建画笔
3.在图片上生成点
4.在图片上画线
5.在图片在画圆
6.在图片在写文本
7.在图片在生成指定字体的文本
代码奉上
代码语言:javascript
复制
#!/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 

实例:

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-12-08 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 整体步骤:
  • 1.创建图片
  • 2.创建画笔
  • 3.在图片上生成点
  • 4.在图片上画线
  • 5.在图片在画圆
  • 6.在图片在写文本
  • 7.在图片在生成指定字体的文本
  • 代码奉上
相关产品与服务
验证码
腾讯云新一代行为验证码(Captcha),基于十道安全栅栏, 为网页、App、小程序开发者打造立体、全面的人机验证。最大程度保护注册登录、活动秒杀、点赞发帖、数据保护等各大场景下业务安全的同时,提供更精细化的用户体验。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档