利用python生成图片验证码

利用python生成图片验证码

图片验证码在生活中得到了广泛的应用,在很多登录页面都可以看到验证码的身影。之所以如此,是因为图片验证码可以隔绝不法分子的密码爆破,对我们的登录过程起到了至关重要的保护作用。
我们就来看看如和生成验证码,我主要写了两个函数。一个用于生成验证码字符串,用于用户的输入验证,一个是生成图片,给用户看,让用户输入对应的信息,供系统进行数据比对。从而进行验证码验证。
第一个就是生成验证码字符串,代码如下:

def number():   # 生成随机验证码字符串
    # captcha_text = [str(i) for i in range(10)]   # 列表形式纯数字,列表的内容为字符串形式的0-9
    captcha_text = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
    example = [random.sample(captcha_text, 1)[0] for i in range(4)] #随机抽取4个字符,作为验证码,如果需要增加验证码长度,修改range(4)的数值即可
    verification_code = ''.join(example)   # 将4个字符拼接
    return verification_code   # 返回验证码内容

第二个就是生成验证码图片了,在有验证码字符串的前提下,获得验证码图片。,代码如下:

def generate_captcha_image(save_path,number):    # 生成验证码图片 
    image = ImageCaptcha()
    if not os.path.exists(save_path):   # 检测目录是否存在,不在则创建
        os.makedirs(save_path)
    image.write(number, '%s/%s.png'%(save_path, number))   # 将绘制好的图片验证码保存
    return save_path   # 返回保存文件的文件夹,方便后期删除

主要的部分就是这两个部分,还有一个也算比较重要的部分吧,就是在生成验证码使用完成后,记得删除验证码,否则会导致不必要的资源浪费,如果不想麻烦,也可以保存,直接供下次使用。这个主要看个人取舍吧。
利用python生成图片验证码的完整代码如下;

import os
import random  # 生成随机验证码
from captcha.image import ImageCaptcha  # 生成图片
import time

def number():   # 生成随机验证码字符串
    # captcha_text = [str(i) for i in range(10)]   # 列表形式纯数字,列表的内容为字符串形式的0-9
    captcha_text = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
    example = [random.sample(captcha_text, 1)[0] for i in range(4)] #生成一个列表,四个随机字符
    verification_code = ''.join(example)   # 将4个字符拼接
    return verification_code   # 返回验证码内容

def generate_captcha_image(save_path,number):    # 生成验证码图片 
    image = ImageCaptcha()
    if not os.path.exists(save_path):   # 检测目录是否存在,不在则创建
        os.makedirs(save_path)
    image.write(number, '%s/%s.png'%(save_path, number))   # 保存图片
    return save_path   # 返回保存文件的文件夹,方便后期删除

def remove(path):   # 退出程序的时候一定要记得删除验证码,否则内存占用会越来越大
    files=os.listdir(path) # 获取目录下的文件
    os.chdir(path)  # 进入目录
    for file in files:os.remove(file)  #遍历删除指定目录下的文件
    os.chdir("..")  # 返回当前目录
    os.rmdir(path)    # 删除这个目录,可根据需要保存这个目录
    return

if __name__ == "__main__":
    nb = number()
    print(nb)
    image = generate_captcha_image("images",nb)  # 生成验证码,第一个参数为保存的路径
    print("验证码保存在:",image)
    # time.sleep(10)
    # remove_image = remove(image)  # 删除验证码
    # print(remove_image)

在实际的生产过程中,对代码进行适当的变更即可正常使用,有些地方注释可能有问题,这只是我个人的理解。希望发现的大佬给予讲解。希望对有需要的人给到帮助。

你可能感兴趣的:(python学习,python)