1. 随机生成rgb 元组

def random_RGB(min, max):
return tuple([random.randint(min, max) for i in range(3)])
2.生成4位随机数
def random_fcode():
code = ''
for i in range(4):
tag = random.randint(1, 3) # 1:大写 2:小写 3:数字
if tag == 1:
code += chr(random.randint(65, 90))
elif tag == 2:
code += chr(random.randint(97, 122))
else:
code += str(random.randint(0, 9))
return code
3.利用画板生成验证码
# 创建画板
img = Image.new('RGB',(170,32),random_RGB(150,255)) # 图像模型,大小,颜色 # 在画板中写字
img_draw = ImageDraw.Draw(img) # img 画板 # 设置文字字体
img_font = ImageFont.truetype('static/font/kumo.ttf',size=32) # 下载的字体, 大小
# 获取验证码,并将验证码存储在session中,与会话绑定,便于登录时验证 img_code = random_fcode()
request.session['img_code'] = img_code # 正式画文字:xy轴,文本,颜色,字体
for i,ch in enumerate(img_code): # i为序号,ch为文本内容(验证码内容)
  img_draw.text((30+i*30,0),ch,random_RGB(0,150),img_font) bf = BytesIO() # 字节流
img.save(bf, 'png') # 存储方法, 画出来的图片的存储格式
data = bf.getvalue() # 从内存中取出数据 return HttpRessponse(data) 在登录界面 可设计成 点击图片进行验证码的刷新
ajax 为:
  
$('#codes').click(function () {

    url = '/login_code/';

    {#点击验证码进行更换#}
var xhr = new XMLHttpRequest();
xhr.open('GET', url, true);
xhr.responseType = 'blob';
xhr.onreadystatechange = function () {
if(xhr.readyState == 4){
if(xhr.status == 200){
var blod = this.response;
var src = URL.createObjectURL(blod);
$('#codes').attr('src',src);
}
}
};
xhr.send()
})

利用PIL创建验证码的更多相关文章

  1. Python利用PIL生成随机验证码图片

    安装pillow: pip install pillow PIL中的Image等模块提供了创建图片,制作图片的功能,大致的步骤就是我们利用random生成6个随机字符串,然后利用PIL将字符串绘制城图 ...

  2. 利用PIL库创建空白图像

    背景 最近,想自己生成带位置坐标的文字数据集来训练文本位置探测网络. 理想情况是,给文字加盐噪声,背景不需要加噪声,所以需要创建一个空白的背景.将文字放在空白背景上,然后利用opencv加噪声. 解决 ...

  3. 基于PIL模块创建验证码图片

    def get_valid_img(request): # 方式2:基于PIL模块创建验证码图片 from PIL import Image, ImageDraw, ImageFont from io ...

  4. 利用pil库处理图像

    1关于PIL PIL(Python Image Library)是python的第三方图像处理库,但是由于其强大的功能与众多的使用人数,几乎已经被认为是python官方图像处理库了. 2PIL的主要功 ...

  5. Oracle Sales Cloud:管理沙盒(定制化)小细节1——利用公式创建字段并显示在前端页面

    Oracle Sales Cloud(Oracle 销售云)是一套基于Oracle云端的CRM管理系统.由于 Oracle 销售云是基于 Oracle 云环境的,它与传统的管理系统相比,显著特点之一便 ...

  6. 利用Oracle创建表空间和用户

    本文仅用于学习交流,商业用途请支持正版!转载请注明:http://www.cnblogs.com/mxbs/p/6217152.html 第一步,创建表空间 以SYS/sys账户和SYSDBA身份登录 ...

  7. 利用Oracle创建数据库

    本文仅用于学习交流,商业用途请支持正版!转载请注明:http://www.cnblogs.com/mxbs/p/6217151.html 数据库的创建 打开"所有程序"-" ...

  8. 利用navicat创建存储过程、触发器和使用游标的简单实例

    利用navicat创建存储过程.触发器和使用游标的简单实例 标签: navicat存储过程触发器mysql游标 2013-08-03 21:34 15516人阅读 评论(1) 收藏 举报  分类: 数 ...

  9. java中利用JFrame创建窗体 【转】

    1. 一个简单的swing public class Test(){ public static void main(String[] args){ JFrame frame = new JFrame ...

随机推荐

  1. C# .NET newtonsoft.json 多版本冲突解决

    A.DLL 引用了6.0 的 newtonsoft.json  (V2 运行时),B.DLL 引用了10.0 的 newtonsoft.json (V4 运行时). 可以在.CONFIG RUNTIM ...

  2. CentOS install duplicity

    yum -y updateyum -y install epel-releaseyum -y install ncftp screen # Compilers and related tools:yu ...

  3. ThinkPHP 中使用 IS_AJAX 判断原生 JS 中的 Ajax 出现问题

    问题: 在 ThinkPHP 中使用原生 js 发起 Ajax 请求的时候.在控制器无法使用 IS_AJAX 进行判断.而使用 jQuery 中的 ajax 是没有问题的. 在ThinkPHP中.有一 ...

  4. python调试pdb

    开始调试 python3 -m pdb pdb.py break 或 b line_num 设置断点设置断点 continue 或 c继续执行程序 list 或 l查看当前行的代码段 step 或 s ...

  5. cassert(assert.h)——1个

    http://www.cplusplus.com/reference/cassert/assert/ 声明:void assert (int expression); #include <ios ...

  6. [转][Oracle]清理归档日志

    来自:https://www.cnblogs.com/Roobbin/p/9617962.html 在Oracle 服务器,打开cmd命令行,执行以下命令: rman target / crossch ...

  7. [UE4]抛物线指示器

    一.抛物线的有以下4中函数 二.本例使用Predict Projectile Path By TraceChannel方法. 抛物线三要素:发射位置.发射角度.发射速度. 1.Start Pos:起始 ...

  8. boolean表达式与在if条件中的运用

    1.boolean语句 boolean 类型的数据 有两个值 false 和true; 2.在if判断的条件语句中 例如: boolean arn =false  在if 判断的括号中可以表示为 !a ...

  9. Egret飞行模拟-开发记录02

    1.Egret异步加载资源制作loading界面 使用EUI,EXML组件制作loading界面时,需要皮肤主题资源加载控制.即default.thm.json配置文件. 下一篇专门记录这部分. 2. ...

  10. jmeter接口测试-GET请求路径中包含特殊字符或中文导致Response400报错

    问题描述:接口测试中异常用例GET请求路径中包含特殊字符或中文,运行jmeter会报错,取样器中只能看到Response400,响应结果为空 解决思路: 对于通过BODY发送的中文内容可以用Jmete ...