zoukankan      html  css  js  c++  java
  • 利用Python几行代码批量生成验证码

    几行代码批量生成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:PyCharmProjectsAPP-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 

    实例:

  • 相关阅读:
    Linux文件及目录查找
    英语单词independent
    英语单词omitting
    英语单词deploy
    英语单词debug
    线程
    进程
    操作系统历史
    分布式爬虫
    爬虫基础
  • 原文地址:https://www.cnblogs.com/iloverain/p/9612954.html
Copyright © 2011-2022 走看看