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

巴扎黑
Libérer: 2017-09-20 09:55:10
original
2019 Les gens l'ont consulté

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
Copier après la connexion

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
Copier après la connexion

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')
Copier après la connexion

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!