当前位置: 首页 > 编程笔记 >

python3 pillow生成简单验证码图片的示例

楚钊
2023-03-14
本文向大家介绍python3 pillow生成简单验证码图片的示例,包括了python3 pillow生成简单验证码图片的示例的使用技巧和注意事项,需要的朋友参考一下

使用Python的pillow模块 random 模块随机生成验证码图片,并应用到Django项目中

安装pillow

$ pip3 install pillow

生成验证码图片

\vericode.py

from PIL import Image,ImageDraw,ImageFont,ImageFilter
import random

 #随机码 默认长度=1
def random_code(lenght=1):  
  code = ''
  for char in range(lenght):
    code += chr(random.randint(65,90))
  return code

 #随机颜色 默认颜色范围【1,255】
def random_color(s=1,e=255):
  return (random.randint(s,e),random.randint(s,e),random.randint(s,e))

 #生成验证码图片
 #length 验证码长度
 #width 图片宽度
 #height 图片高度
 #返回验证码和图片
def veri_code(lenght=4,width=160,height=40):
  #创建Image对象
  image = Image.new('RGB',(width,height),(255,255,255))
  #创建Font对象
  font = ImageFont.truetype('Arial.ttf',32)
  #创建Draw对象
  draw = ImageDraw.Draw(image)
  #随机颜色填充每个像素
  for x in range(width):
    for y in range(height):
      draw.point((x,y),fill=random_color(64,255))
  #验证码
  code = random_code(lenght)
  #随机颜色验证码写到图片上
  for t in range(lenght):
    draw.text((40*t+5,5),code[t],font=font,fill=random_color(32,127))
  #模糊滤镜
  image = image.filter(ImageFilter.BLUR)
  return code,image

应用

编写Django应用下的视图函数

\views.py

from . import vericode.py
from io import BytesIO
from django.http import HttpResponse

def verify_code(request):
  f = BytesIO()
  code,image = vericode.veri_code()
  image.save(f,'jpeg')
  request.session['vericode'] = code
  return HttpResponse(f.getvalue())

def submit_xxx(request):
  if request.method == "POST":
    vericode = request.session.get("vericode").upper()
    submitcode = request.POST.get("vericode").upper()
    if submitcode == vericode:
      return HttpResponse('ok')
  return HttpResponse('error')

这里使用了Django的session,需要在Django settings.py的INSTALLED_APPS中添加'django.contrib.sessions'(默认添加)
verify_code视图函数将验证码添加到session中和验证码图片一起发送给浏览器,当提交表单到submit_xxx()时,先从session中获取验证码,再对比从表单中的输入的验证码。

这里只是简单说明,url配置和前端代码未给出。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持小牛知识库。

 类似资料:
  • 本文向大家介绍java生成图片验证码的示例代码,包括了java生成图片验证码的示例代码的使用技巧和注意事项,需要的朋友参考一下 给大家分享一款java生成验证码的源码,可设置随机字符串,去掉了几个容易混淆的字符,还可以设置验证码位数,比如4位,6位。当然也可以根据前台验证码的位置大小,设置验证码图片的大小。下边是源码分享,直接看吧,很简单! 创建servlet类 创建工具类 配置 web.xml

  • 本文向大家介绍php生成图片验证码,包括了php生成图片验证码的使用技巧和注意事项,需要的朋友参考一下 先给看下 大致的效果 那么接下来的就直接贴代码吧 再给大家分享一个可以生成中文验证码 再来一个实例吧 接下来只要在页面中调用就可以了: 如果想实现 "看不清?换一张" 效果,添加如下 JS 到页面中 以上所述就是本文的全部内容了,希望大家能够喜欢。

  • 本文向大家介绍PHP生成图片验证码功能示例,包括了PHP生成图片验证码功能示例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了PHP生成图片验证码功能。分享给大家供大家参考,具体如下: 只是简单的用随机函数实现了图片的生成,没有对验证的整个流程做介绍。 代码如下: 运行效果如下: PS:这里再为大家推荐几款比较实用的图片处理工具供大家参考使用: 在线图片转换BASE64工具: http:/

  • 本文向大家介绍python图片验证码生成代码,包括了python图片验证码生成代码的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了python图片验证码实现代码,供大家参考,具体内容如下 以上就是本文的全部内容,希望对大家学习python程序设计有所帮助。

  • 本文向大家介绍Java验证码图片生成代码,包括了Java验证码图片生成代码的使用技巧和注意事项,需要的朋友参考一下 Java生成验证码图片的具体代码,供大家参考,具体内容如下 1、首先新建一各专门生成验证码图片的类VerifyCode: 2、在jsp页面上应用: 其核心代码如下: 看不清换一张使用javascript实现,代码如下:  +new Date().getTime()这条语句可以欺骗浏览

  • 本文向大家介绍javaweb servlet生成简单验证码,包括了javaweb servlet生成简单验证码的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了javaweb servlet生成验证码的具体代码,供大家参考,具体内容如下 运行截图: 更多关于验证码的文章请点击查看:《java验证码》 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。