1. 创建文件img_code.py

调用该函数随机生成图片信息,返回图片及文本验证码

import random
from PIL import Image, ImageDraw, ImageFont  # pip install pillowdef image_code():# 通过数字获取ascii表中的对应字母def get_char():return chr(random.randint(65, 90))# 获取随机颜色def get_color(*args):if args == ():return (random.randint(0, 255), random.randint(0, 255), random.randint(0, 255))while True:text_color = get_color()aberration = 3 * (text_color[0] - args[0][0]) ** 2 + 4 * (text_color[0] - args[0][1]) ** 2 + 2 * (text_color[0] - args[0][2]) ** 2rgb2 = 100000  # 设置字体颜色与背景色差,值越大,字体越清晰,机器人就更容易识别,相对应的代价就是需要随机更多次的RGB值。极端情况验证码字体背景rgb均为128,aberration最小的最大值为147456if aberration > rgb2:return text_color# 创建图片对象img_back = get_color()img = Image.new(mode='RGB', size=(120, 50), color=img_back)# 创建画笔对象draw = ImageDraw.Draw(img, mode='RGB')# 噪点 xy:基于图片的坐标,fill表示点颜色for i in range(50):draw.point([random.randint(0, 120), random.randint(0, 50)], fill=get_color())# 噪线 xy:(起点坐标,终点坐标) fill:颜色  width:线宽# draw.line((50, 30, 100, 60),fill='purple', width=5)for i in range(5):draw.line([random.randint(0, 120), random.randint(0, 50), random.randint(0, 120), random.randint(0, 50)],fill=get_color())# 划圆或弧线for i in range(5):x = random.randint(0, 120)y = random.randint(0, 50)x2 = x + 4y2 = y + 4draw.arc((x, y, x2, y2), 0, 90, fill=get_color())font = ImageFont.truetype('fonts/domi.ttf', 30)# 用来拼接验证码字符的char_list = []for i in range(5):char = get_char()char_list.append(char)height = random.randint(10, 15)draw.text([18 * (i + 1), height], char, get_color(img_back), font=font)char_code = ''.join(char_list)# 模糊效果和边缘增强效果# img = img.filter(ImageFilter.BLUR)# img = img.filter(ImageFilter.EDGE_ENHANCE_MORE)return img, char_code

2. 在视图函数(view)添加

用于在web前端向服务器请求图片验证码

def img_code(request):img, char_code = image_code()# 将图片数据写到内存from io import BytesIOstream = BytesIO()img.save(stream, format='png')# 将图片验证码保存到session中request.session['image_code'] = char_code# 图片验证码有效期,单位秒request.session.set_expiry(settings.IMAGE_CODE_EXPIRE)return HttpResponse(stream.getvalue())

并为其添加url路径

3. 在HTML代码中添加

<img id="img_code" height="34" width="120" src="{% url 'img_code' %}" alt="">

示例:


Python 生成图片验证码(详解)相关推荐

  1. python20191031_20191031:Python取反运算详解

    20191031:Python取反运算详解 取反运算:~3 == 4 1.对于数字 3 =======>转换为二进制表示为011 2.对011取反为100 3.为什么表示-4 a.计算机用补码表 ...

  2. Python字符编码详解

    Python字符编码详解 转自http://www.cnblogs.com/huxi/archive/2010/12/05/1897271.html Python字符编码详解 本文简单介绍了各种常用的 ...

  3. python的执行过程_在交互式环境中执行Python程序过程详解

    前言 相信接触过Python的伙伴们都知道运行Python脚本程序的方式有多种,目前主要的方式有:交互式环境运行.命令行窗口运行.开发工具上运行等,其中在不同的操作平台上还互不相同.今天,小编讲些Py ...

  4. windows上安装Anaconda和python的教程详解

    一提到数字图像处理编程,可能大多数人就会想到matlab,但matlab也有自身的缺点: 1.不开源,价格贵 2.软件容量大.一般3G以上,高版本甚至达5G以上. 3.只能做研究,不易转化成软件. 因 ...

  5. python变量类型-Python 变量类型详解

    变量存储在内存中的值.这就意味着在创建变量时会在内存中开辟一个空间. 基于变量的数据类型,解释器会分配指定内存,并决定什么数据可以被存储在内存中. 因此,变量可以指定不同的数据类型,这些变量可以存储整 ...

  6. python安装教程windows-windows上安装Anaconda和python的教程详解

    一提到数字图像处理编程,可能大多数人就会想到matlab,但matlab也有自身的缺点: 1.不开源,价格贵 2.软件容量大.一般3G以上,高版本甚至达5G以上. 3.只能做研究,不易转化成软件. 因 ...

  7. python语言编程基础-Python语言入门详解!快速学成Python!

    原标题:Python语言入门详解!快速学成Python! 很多技能是被职场所需要的,但很可惜... 这些技能在大学中并学习不到. 大学和职场现实存在的横沟对大部分同学来说难以跨越或碰得头破血流... ...

  8. Python 字符串方法详解

    Python 字符串方法详解 本文最初发表于赖勇浩(恋花蝶)的博客(http://blog.csdn.net/lanphaday),如蒙转载,敬请保留全文完整,切勿去除本声明和作者信息. 在编程中,几 ...

  9. 代码检查规则:Python语言案例详解

    在之前的文章中代码检查规则:Java语言案例详解学习了Java的检查规则.我们今天将学习<代码检查规则:Python语言案例详解>,内容主要分为两个部分:Python的代码检查规则和Pyt ...

  10. python time模块详解

    python time模块详解 转自:http://blog.csdn.net/kiki113/article/details/4033017 python 的内嵌time模板翻译及说明    一.简 ...

最新文章

  1. 利用software center在线更新windows 10 1909失败
  2. BAT在AI领域投资收购大起底:当我们说搞AI时我们要搞些什么?
  3. qt 进度条最小_QT:圆形进度条设计
  4. br php 配置,无法载入 mcrypt 扩展,br /请检查 PHP 配置终极解决方案
  5. C++ 2022常见知识点
  6. linux中posix共享内存,Linux 共享内存(POSIX)
  7. 10g gtx 光纤通信测试_光纤通信optisystem实验
  8. Gambit 4.运行时选项
  9. 常见的IC封装形式大全
  10. 3DMine安装教程(附详细图文安装步骤)
  11. delphi 隐藏指定程序的托盘图标
  12. 如何创建网站 网站的创建方法
  13. 1039:判断数正负(测试已通过)
  14. 51单片机+LCD12864的万年历Proteus仿真
  15. 留学地 各国比较2021
  16. 用java实现图片合并与折叠
  17. MT4客户端通讯分析(一)——登录部分分析
  18. 20210326TCPandUDP
  19. “黑球”行动再升级,SMBGhost漏洞攻击进入实战
  20. K2 工作流_携手捷普:让流程立于云端,臻于至上_全球领先的工作流引擎

热门文章

  1. Scratch不仅适合小朋友,程序员和大学老师都应该广泛使用!!!
  2. 多线程系列学习:ABA问题
  3. EPICS记录参考--计算输出记录(calcout)
  4. 迅雷高速下载免安装 Kali Linux
  5. qt android png透明,Qt处理照片实现白色背景转透明
  6. 尚硅谷-谷粒商城-电商项目-秒杀系统-笔记
  7. 金山WPS:云端协同 AI赋能 WPS树起了Office新四大件|企服三会系列报道
  8. 视频教程-其实你还不懂Word-Office/WPS
  9. python excel画图_matplotlib 画图直接写入excel
  10. 数据探索简介——质量分析、特征分析