Python工具系列之验证码自动生成

Python工具系列之验证码自动生成,第1张

概述Python工具系列之验证码自动生成小程序爬虫接单、app爬虫接单、网页爬虫接单、接口定制、网站开发、小程序开发>点击这里联系我们<微信请扫描下方二维码代码仅供学习交流,请勿用于非法用途直接上代码#-*-coding:utf-8-*-importrandomimportosfromPILimpor Python工具系列之验证码自动生成小程序爬虫接单、app爬虫接单、网页爬虫接单、接口定制、网站开发、小程序开发> 点击这里联系我们 <微信请扫描下方二维码

代码仅供学习交流,请勿用于非法用途

直接上代码
# -*- Coding:utf-8 -*-import randomimport osfrom PIL import Image, ImageDraw, ImageFont# 每个字母之间的间隙大小FontClearance = 2# 圆直径arcN = 0def getRandcolor():    '''    获取随机rgb颜色元组    :return:    '''    return (random.randint(0, 255), random.randint(0, 255), random.randint(0, 255))def getRandstr():    '''    获取随机字符0-9 a-z    :return:    '''    return random.choice([chr(random.randint(65, 90)), str(random.randint(0, 9))])def getRangBgimg():    '''    从当前程序所在文件夹的imgs文件夹下获取一张随机的图片    :return:    '''    currPath = os.getcwd() + "/imgs"    fs = os.Listdir(currPath)    return currPath + "/" + random.choice(fs)def getFontSize(n, wIDth, height):    '''    获取字体大小    :param n:字体个数    :param wIDth:图片宽度    :param height:图片高度    :return:    '''    global arcN    FontAllClearance = 2 * n * FontClearance    reClearance = wIDth - FontAllClearance    FontSize = reClearance // n    startY = 0    if FontSize < height:        startY = (height - FontSize) // 2    else:        FontSize = height - 10        startY = 5    startX = FontClearance    arcN = FontSize // 10    return FontSize, startX, startYdef getRandline(wIDth, height):    '''    获取随机线条    :param wIDth:图片宽度    :param height:图片高度    :return:    '''    return random.randint(0, wIDth), random.randint(0, height), random.randint(0, wIDth), random.randint(0, height)def getRandPoint(wIDth, height):    '''    获取随机点的方形对角坐标    :param wIDth:图片宽度    :param height:图片高度    :return:    '''    x = random.randint(0, wIDth)    y = random.randint(0, height)    return x, y, x + arcN, y + arcNdef genValIDCode(strNum, lineNums, pointNums):    '''    验证码生成函数    :param strNum:验证码字母数    :param lineNums:验证码线条数    :param pointNums:验证码圆圈数    :return:    '''    # 获取一张随机图片的文件路径    imgPath = getRangBgimg()    # 打开图片对象    img = Image.open(imgPath)    # 获取图片的宽高    wIDth, height = img.size    # 通过字体数目和图片的宽高,计算出字体大小,以及字体开始写入的x y 坐标    FontSize, startX, startY = getFontSize(strNum, wIDth, height)    # 实例化一支画笔    draw1 = ImageDraw.Draw(img, mode="RGB")    # 定义要使用的字体    Font1 = ImageFont.truetype("simfang.ttf", FontSize)    # 写字    for i in range(strNum):        s = getRandstr()        draw1.text([startX + (i * FontSize) + (((2 * (i + 1)) - 1) * FontClearance), startY], s, getRandcolor(), Font=Font1)    # 画线    for i in range(lineNums):        draw1.line((getRandline(wIDth, height)), fill=getRandcolor())    # 画点    for i in range(pointNums):        draw1.arc((getRandPoint(wIDth, height)), 0, 360, fill=getRandcolor())    # 生成图片    with open("pic.png", "wb") as f:        img.save(f, format="png")    print("生成成功!")if __name__ == '__main__':    # 初始化验证码、线条数、圆圈数    strNum, lineNums, pointNums = 5, 5, 10    genValIDCode(strNum, lineNums, pointNums)
总结

以上是内存溢出为你收集整理的Python工具系列之验证码自动生成全部内容,希望文章能够帮你解决Python工具系列之验证码自动生成所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1187844.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存