urls.py

  1. path('get_code/',views.get_code),

views.py中

  1. from PIL import Image,ImageFont,ImageDraw
  2. """
  3. Image 产生图片
  4. ImageFont 字体样式
  5. ImageDraw 画笔对象
  6. """
  7. from io import BytesIO,StringIO
  8. """
  9. BytesIO 在内存中临时存储 读取的时候以bytes格式为准
  10. StringIO 在内存中临时存储 读取的时候以字符串格式为准
  11. """
  12. import random
  13. def get_random()
  14. return random.randint(0,255),random.randint(0,255),random.randint(0,255)
  15. def get_code_func(request)
  16. # 1.推导步骤1:直接读取图片文件返回
  17. # with open(r'F:\BBS\static\img\123.png','rb') as f:
  18. # data = f.read()
  19. # return HttpResponse(data)
  20. # 2.推导步骤2:随机产生图片动态返回 第三方pillow模块
  21. # img_obj = Image.new('RGB',(350,35),'green')
  22. # with open(r'xxx.png','wb') as f:
  23. # img_obj.save(f,'png')
  24. # with open(r'xxx.png','rb') as f:
  25. # data = f.read()
  26. # return HttpResponse(data)
  27. # 3.推导步骤3:针对图片的保存与读取做优化 内存管理器
  28. # img_obj = Image.new('RGB',(350,35),'yellow')
  29. # io_obj = BytesIO()
  30. # img_obj.save(io_obj,'png')
  31. # return HttpResponse(io_obj.getvalue())
  32. # 4.推导步骤4:图片颜色是可以随机变换的
  33. # img_obj = Image.new('RGB',(350,35),get_random())
  34. # io_obj = BytesIO()
  35. # img_obj.save(io_obj,'png')
  36. # return HttpResponse(io_obj.getvalue())
  37. # 5.推导步骤5:编写验证码
  38. # 先产生图片对象
  39. img_obj = Image.new('RGB',(350,35),get_random())
  40. # 将图片对象交给画笔对象
  41. draw_obj = ImageDraw.Draw(img_obj)
  42. # 确定字体样式(ttf文件)
  43. font_obj = ImageFont.truetype('static/font/123.ttf',35)
  44. # 产生随机验证码
  45. code = ''
  46. for i in range(5):
  47. random_upper = chr(random.randint(65,90))
  48. random_lower = chr(random.randint(97,122))
  49. random_int = str(random.randint(0,9))
  50. # 三选一
  51. temp_choice = random.choice([random_upper,random_lower,random_int])
  52. # 写到图片上
  53. draw_obj.text((i*60 + 45 ,0),temp_choice,font=font_obj)
  54. code += temp_choice
  55. # 后端保存验证码 便于后续的比对
  56. request.session['code'] = code
  57. io_obj = BytesIO()
  58. img_obj.save(io_obj,'png')
  59. return HttpResponse(io_obj.getvalue())

html页面中

  1. <img src="/get_code/" alt="" style="根据实际情况设置" id="code">
  2. // 验证码动态刷新
  3. $('#code').click(function () {
  4. let oldSrc = $(this).attr('src');
  5. $(this).attr('src', oldSrc + '?')
  6. })

Pillow模块——生成随机验证码的更多相关文章

  1. Python使用PIL模块生成随机验证码

    PIL模块的安装 pip3 install pillow 生成随机验证码图片 import random from PIL import Image, ImageDraw, ImageFont fro ...

  2. pillow实例 | 生成随机验证码

    1 PIL(Python Image Library) PIL是Python进行基本图片处理的package,囊括了诸如图片的剪裁.缩放.写入文字等功能.现在,我便以生成随机验证码为例,讲述PIL的基 ...

  3. 基于Python Pillow库生成随机验证码

    from PIL import Image from PIL import ImageDraw from PIL import ImageFont import random class ValidC ...

  4. Django中生成随机验证码(pillow模块的使用)

    Django中生成随机验证码 1.html中a标签的设置 <img src="/get_validcode_img/" alt=""> 2.view ...

  5. Python 生成随机验证码

    Python生成随机验证码  Python生成随机验证码,需要使用PIL模块. 安装: 1 pip3 install pillow 基本使用 1. 创建图片 1 2 3 4 5 6 7 8 9 fro ...

  6. Python生成随机验证码

    Python生成随机验证码,需要使用PIL模块. 安装: pip3 install pillow 基本使用 1.创建图片 from PIL import Image img = Image.new(m ...

  7. Java生成随机验证码

    package com.tg.snail.core.util; import java.awt.Color; import java.awt.Font; import java.awt.Graphic ...

  8. C#生成随机验证码例子

    C#生成随机验证码例子: 前端: <tr> <td width=" align="center" valign="top"> ...

  9. struts2生成随机验证码图片

    之前想做一个随机验证码的功能,自己也搜索了一下别人写的代码,然后自己重新用struts2实现了一下,现在将我自己实现代码贴出来!大家有什么意见都可以指出来! 首先是生成随机验证码图片的action: ...

  10. 使用模块PIL 生成 随机验证码

    --------------默认自己无能,无疑是给失败制造机会!你认为自己是什么样的人,就将成为什么样的人. 要使用PIL模块. 安装: 1 pip3 install pillow 基本使用 1. 创 ...

随机推荐

  1. UAC的详细讲解(转载)

    win32中也有对UAC的操作方法 网址:https://blog.csdn.net/zuishikonghuan/article/details/46965159?locationNum=7& ...

  2. SpringBoot——实现WebService接口服务端以及客户端开发

    参考:https://blog.csdn.net/qq_43842093/article/details/123076587 https://www.cnblogs.com/yinyl/p/14197 ...

  3. 学习记录--C++作业3

    1.类是一个模板吗? 是:类模板是一个抽象的类,代表类的一般特性,可以用类模板来创建类,所有的类都有共有的特性. 4.函数模板的实例化是什么? 模板函数,即函数 3.关于cin和cout说法正确的: ...

  4. 记一个jdbc创建数据库、用户操作时,创建新用户提示CREATE USER权限问题

    手写存储表数据库信息,访问链接动态数据源操作: mysql: 1.root登录服务器 进入数据库 mysql -u root -p2.创建数据库 create database shop; shop ...

  5. MySQL基础随笔记

    [1]SQL语言入门      我们都知道,数据库管理人员(DBA)通过数据库管理系统(DBMS)可以对数据库(DB)中的数据进行操作,但具体是如何操作的呢?这就涉及到我们本节要讲的SQL语言.SQL ...

  6. Android笔记--FileProvider

    FileProvider介绍 继承于ContentProvider,本质上依旧是用于跨境通信,对第三方应用暴露文件,并授予文件读写地权限 具体内容 1.在Strings.xml里面配置一个常量 2.在 ...

  7. 14.AQS的前世,从1990年的论文说起

    大家好,我是王有志.关注王有志,一起聊技术,聊游戏,聊在外漂泊的生活. 鸽了这么久怪不好意思的,因此送一本<多处理器编程的艺术>,快点击此处参加吧.另外欢迎大家加入"共同富裕的J ...

  8. etcd详解

    etcd原理详解 etcd概述 etcd的特点 etcd是一个Go言编写的分布式.高可用的一致性键值存储系统,用于提供可靠的分布式键值存储.配置共享和服务发现等功能 etcd具有以下特点: 简单: 易 ...

  9. Kafka 消息送达语义

    更多内容,前往IT-BLOG 消息送达语义是消息系统中一个常见的问题,主要包含三种语义:[1]At most once:消息发送或消费至多一次:[2]At least once:消息发送或消费至少一次 ...

  10. C#多线程开发-处理异步操作中的异常

    C#多线程开发-处理子线程中的异常 在平时的多线程开发中,对于异常的处理是至关重要的,千万不能马虎.如果在实际的项目中,对于某些线程中的异常没有处理,会直接导致整个程序崩溃,软件无法使用. 其中需要说 ...