Python实现网站注册验证码生成类
发布时间 - 2026-01-11 01:47:44 点击率:次本文实例为大家分享了Python网站注册验证码生成类的具体代码,供大家参考,具体内容如下
# -*- coding:utf-8 -*-
'''
Created on 2017年4月7日
@author: Water
'''
import os
import random
import string
import sys
import math
from PIL import Image,ImageDraw,ImageFont,ImageFilter
from django.conf import settings
#字体的位置,不同版本的系统会有不同
font_path = os.path.join('/home/workspace/aofeiKart/static', 'fonts/monaco.ttf')#settings.STATIC_ROOT, 'fonts/MONACO.TTF')
font_path = os.path.join(settings.STATIC_ROOT, 'fonts/monaco.ttf')
# print font_path
#生成几位数的验证码
number = 4
#生成验证码图片的高度和宽度
size = (100,30)
#背景颜色,默认为白色
bgcolor = (255,255,255)
#字体颜色,默认为蓝色
fontcolor = (0,0,255)
#干扰线颜色。默认为红色
linecolor = (255,0,0)
#是否要加入干扰线
draw_line = True
#加入干扰线条数的上下限
line_number = (1,5)
#用来随机生成一个字符串
# source = list(string.ascii_lowercase+'1234567890')
source = list('1234567890')
def gene_text():
# return '6666'
return ''.join(random.sample(source,number))#number是生成验证码的位数
#用来绘制干扰线
def gene_line(draw,width,height):
begin = (random.randint(0, width), random.randint(0, height))
end = (random.randint(0, width), random.randint(0, height))
draw.line([begin, end], fill = linecolor)
#生成验证码
def gene_code():
width,height = size #宽和高
image = Image.new('RGBA',(width,height),bgcolor) #创建图片
font = ImageFont.truetype(font_path,25) #验证码的字体
draw = ImageDraw.Draw(image) #创建画笔
text = gene_text() #生成字符串
font_width, font_height = font.getsize(text)
draw.text(((width - font_width) / number, (height - font_height)/number),text,
font= font,fill=fontcolor) #填充字符串
if draw_line:
gene_line(draw,width,height)
image = image.transform((width+20,height+10), Image.AFFINE, (1,-0.3,0,-0.1,1,0), Image.BILINEAR) #创建扭曲
image = image.filter(ImageFilter.EDGE_ENHANCE_MORE) #滤镜,边界加强
image_file = text+'.png'
image_path = os.path.join(settings.STATIC_ROOT, 'images/%s'%image_file)
image.save(image_path) #保存验证码图片
return 'http://login.chaozu.net:8000/static/images/%s'%image_file, text
if __name__ == "__main__":
print gene_code()
实现过程很简单,主要注意有2点:
1.安装PIL库,设置好字体保存目录
2.如果直接返回图片的二进制数据流的話,如下:
buf = io.BytesIO() #io.BytesIO() #io.StringIO() use it to fill str obj image.save(buf, 'png') request.session['captcha'] = text.lower() return HttpResponse(buf.getvalue(), 'image/png') # return the image data stream as image/jpeg format, browser will treat it as an image
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# Python网站注册验证码
# Python验证码生成类
# Python网站注册验证
# Python生成随机验证码的两种方法
# Python随机生成一个6位的验证码代码分享
# Python 随机生成中文验证码的实例代码
# python生成验证码图片代码分享
# python使用pil生成图片验证码的方法
# python PIL模块与随机生成中文验证码
# python3 pillow生成简单验证码图片的示例
# Python random模块(获取随机数)常用方法和使用例子
# Python中random模块生成随机数详解
# python的random模块及加权随机算法的python实现方法
# Python随机数用法实例详解【基于random模块】
# Python实现简单生成验证码功能【基于random模块】
# 验证码
# 默认为
# 滤镜
# 会有
# 很简单
# 大家分享
# 具体内容
# 大家多多
# STATIC_ROOT
# ttf
# monaco
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Laravel如何升级到最新的版本_Laravel版本升级流程与兼容性处理
如何快速搭建高效WAP手机网站吸引移动用户?
详解Android中Activity的四大启动模式实验简述
Laravel怎么实现模型属性的自动加密
Python结构化数据采集_字段抽取解析【教程】
ChatGPT怎么生成Excel公式_ChatGPT公式生成方法【指南】
Laravel如何使用Service Container和依赖注入?(代码示例)
开心动漫网站制作软件下载,十分开心动画为何停播?
如何在宝塔面板中创建新站点?
Laravel怎么为数据库表字段添加索引以优化查询
Laravel辅助函数有哪些_Laravel Helpers常用助手函数大全
Android使用GridView实现日历的简单功能
Laravel用户认证怎么做_Laravel Breeze脚手架快速实现登录注册功能
宙斯浏览器文件分类查看教程 快速筛选视频文档与图片方法
Laravel Eloquent关联是什么_Laravel模型一对一与一对多关系精讲
如何快速登录WAP自助建站平台?
Laravel如何使用Guzzle调用外部接口_Laravel发起HTTP请求与JSON数据解析【详解】
Laravel如何记录自定义日志?(Log频道配置)
Android自定义控件实现温度旋转按钮效果
Android滚轮选择时间控件使用详解
JavaScript Ajax实现异步通信
Laravel如何使用API Resources格式化JSON响应_Laravel数据资源封装与格式化输出
b2c电商网站制作流程,b2c水平综合的电商平台?
Laravel怎么实现搜索高亮功能_Laravel结合Scout与Algolia全文检索【实战】
如何用低价快速搭建高质量网站?
Windows10电脑怎么设置虚拟光驱_Win10右键装载ISO镜像文件
Mybatis 中的insertOrUpdate操作
Laravel如何构建RESTful API_Laravel标准化API接口开发指南
如何快速搭建支持数据库操作的智能建站平台?
如何用好域名打造高点击率的自主建站?
Laravel怎么进行浏览器测试_Laravel Dusk自动化浏览器测试入门
如何注册花生壳免费域名并搭建个人网站?
php静态变量怎么调试_php静态变量作用域调试技巧【解答】
高性能网站服务器配置指南:安全稳定与高效建站核心方案
Python文件流缓冲机制_IO性能解析【教程】
laravel怎么实现图片的压缩和裁剪_laravel图片压缩与裁剪方法
深入理解Android中的xmlns:tools属性
青岛网站建设如何选择本地服务器?
佛山网站制作系统,佛山企业变更地址网上办理步骤?
高防服务器如何保障网站安全无虞?
如何在新浪SAE免费搭建个人博客?
网站建设整体流程解析,建站其实很容易!
Swift中swift中的switch 语句
Linux虚拟化技术教程_KVMQEMU虚拟机安装与调优
Laravel的契約(Contracts)是什么_深入理解Laravel Contracts与依赖倒置
免费视频制作网站,更新又快又好的免费电影网站?
Laravel如何实现邮箱地址验证功能_Laravel邮件验证流程与配置
网站优化排名时,需要考虑哪些问题呢?
Laravel Eloquent:优雅地将关联模型字段扁平化到主模型中
如何用y主机助手快速搭建网站?

