1. 随机生成rgb 元组

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

利用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. HashMap解读

    个人理解,欢迎提出问题

  2. WebService之客户端

    创建项目 File→New→Other→Web Services→Web Service Client中输入从服务端得到的wsdl链接: http://localhost:8080/WS_WebSer ...

  3. ID 生成器 雪花算法

    https://blog.csdn.net/wangming520liwei/article/details/80843248 ID 生成器 雪花算法 2018年06月28日 14:58:43 wan ...

  4. Kettle解决方案: 第五章 ETL相关知识

    早期, ETL知识作为BI系统的一部分来介绍. 后来在The Data Warehouse ETL Tooket一书中, 系统性的整理了ETL的相关内容, 形成了一篇"ETL里的34个子系统 ...

  5. C#使用Linq to Sqlite

    1.首先到Nuget命令行运行: Install-Package linq2db.SQLite 2.在项目下添加一个文件夹:DataModels,用以存放数据库相关的文件,显得规整 3.找到CopyM ...

  6. Elasticsearch-6.7.0系列-Joyce博客总目录

     官方英文文档地址:https://www.elastic.co/guide/index.html Elasticsearch博客目录 Elasticsearch-6.7.0系列(一)9200端口 . ...

  7. 面向对象版Tab栏切换

    <div class="wrapper" id="wrapper"> <ul class="tab" id="t ...

  8. udev磁盘绑定

    udev磁盘绑定 [grid@db-rac02 ~]$ cat 99-asm-multipath.rules KERNEL=="sd*",SUBSYSTEM=="bloc ...

  9. 最近想学Json,请问大家有没有什么好的Json教程介绍一下?

    最近想学json,请问大家有没有什么好的Json教程介绍一下? 最近学完java的框架了,想了解一下json,可是找不到相关视频,请大家有这方面的Json教程好资料就介绍下啦,最后有网址链接啦. {} ...

  10. nfs与dhcp服务

    NFS服务端概述 NFS,是Network File System的简写,即网络文件系统.网络文件系统是FreeBSD支持的文件系统中的一种,也被称为NFS: NFS允许一个系统在网络上与他人共享目录 ...