Maison  >  Article  >  développement back-end  >  Introduction à la méthode de génération d'images de code de vérification dans Python3 Pillow

Introduction à la méthode de génération d'images de code de vérification dans Python3 Pillow

巴扎黑
巴扎黑original
2017-09-20 09:55:102062parcourir

Cet article présente principalement l'exemple de l'oreiller python3 pour générer une image de code de vérification simple, qui est d'une grande valeur pratique. Les amis dans le besoin peuvent s'y référer

Utilisez le module aléatoire du module oreiller de Python pour générer de manière aléatoire une vérification. images de code et appliquer au projet Django

Installer l'oreiller


$ pip3 install pillow

Générer l'image du code de vérification


\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

Application

Ecrire la fonction d'affichage sous l'application 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')

Session de Django est utilisé ici, vous devez ajouter 'django.contrib.sessions' (ajouté par défaut) dans INSTALLED_APPS de Django settings.py
la fonction d'affichage verify_code ajoute le code de vérification à la session et envoie l'image du code de vérification au navigateur lorsque En soumettant le formulaire à submit_xxx (), obtenez d'abord le code de vérification de la session, puis comparez-le avec le code de vérification saisi à partir du formulaire.

Voici juste des instructions simples, la configuration de l'url et le code front-end ne sont pas donnés.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn