生成验证码是一种常见的网络应用场景,可以用于用户注册、登录验证等等。下面是Python生成验证码的完整攻略。
1. 安装依赖库
Python生成验证码需要用到Pillow库,可以通过以下命令安装:
pip install Pillow
2. 创建验证码生成函数
我们创建一个名为get_verify_code
的函数,该函数可以生成4位随机字符,还会将字符绘制到图片上并加入干扰线,最后返回该图片和验证码字符串。
from io import BytesIO
from random import randint
from PIL import Image, ImageDraw, ImageFont
def get_verify_code():
# 随机生成4位字符串
code_str = ''.join(str(randint(0, 9)) for i in range(4))
# 新建一个Image对象
img = Image.new(mode='RGB', size=(120, 30), color=(255, 255, 255))
# 获取字体文件
font_path = 'arial.ttf'
font_size = 25
font = ImageFont.truetype(font_path, font_size)
# 获取绘图对象
draw = ImageDraw.Draw(img)
# 绘制字符串
for i in range(4):
draw.text((26 * i + 10, 0), code_str[i], font=font, fill=(0, 0, 0))
# 绘制干扰线
for i in range(5):
line_color = tuple(randint(0, 255) for i in range(3))
xy = (randint(0, 120), randint(0, 30), randint(0, 120), randint(0, 30))
draw.line(xy, fill=line_color, width=2)
# 将图片保存到BytesIO对象中
img_buffer = BytesIO()
img.save(img_buffer, format='jpeg')
return img_buffer.getvalue(), code_str
3. 使用验证码生成函数
调用 get_verify_code
函数,即可获得生成的验证码图片和对应的字符。
from flask import Flask, Response, session
app = Flask(__name__)
app.secret_key = '12345'
@app.route('/verify_code')
def verify_code():
img_buffer, code_str = get_verify_code()
session['verify_code'] = code_str
return Response(img_buffer, content_type='image/jpeg')
示例说明1:Flask应用生成验证码
以上代码演示了如何在Flask中使用 get_verify_code
函数,实现生成验证码的请求处理方法。
通过 /verify_code
路由地址,当客户端请求该地址时,生成验证码,并将验证码字符串存储到session中。客户端可以通过获取生成的验证码图片,然后在输入框中输入对应的验证码字符串进行校验。
示例说明2:Django应用生成验证码
在Django中使用 get_verify_code
函数实现生成验证码的请求处理方法,和 Flask 中处理方式一样:
from django.http import HttpResponse
from django.shortcuts import render
from django.views.decorators.cache import never_cache
@never_cache
def verify_code(request):
img_buffer, code_str = get_verify_code()
request.session['verify_code'] = code_str
return HttpResponse(img_buffer, content_type='image/jpeg')
以上代码演示了如何在Django中使用 get_verify_code
函数,实现生成验证码的请求处理方法。通过verify_code
路由地址,当客户端请求该地址时,生成验证码,并将验证码字符串存储到session中。客户端可以通过获取生成的验证码图片,然后在输入框中输入对应的验证码字符串进行校验。
这就是Python生成验证码的完整攻略。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python生成验证码实例 - Python技术站