Heim >Backend-Entwicklung >Python-Tutorial >Einführung in die Methode zum Generieren von Bestätigungscodebildern in Python3 Pillow

Einführung in die Methode zum Generieren von Bestätigungscodebildern in Python3 Pillow

巴扎黑
巴扎黑Original
2017-09-20 09:55:102105Durchsuche

In diesem Artikel wird hauptsächlich das Beispiel des Python3-Kissens zum Generieren eines einfachen Verifizierungscodebilds vorgestellt, das von großem praktischem Wert ist.

Verwenden Sie das Pillow-Modul von Python, um eine Verifizierung nach dem Zufallsprinzip zu generieren Codebilder und Auf Django-Projekt anwenden

Kissen installieren


$ pip3 install pillow

Bestätigungscodebild generieren


\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

Anwendung

Schreiben Sie die Ansichtsfunktion unter der Django-Anwendung


\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')

Djangos Sitzung Wird hier verwendet, müssen Sie „django.contrib.sessions“ (standardmäßig hinzugefügt) in INSTALLED_APPS von Django Settings.py hinzufügen. Die
verify_code-Ansichtsfunktion fügt den Bestätigungscode zur Sitzung hinzu und sendet das Bestätigungscode-Bild an den Browser, wenn Senden Sie das Formular ansubmit_xxx (), rufen Sie zunächst den Bestätigungscode aus der Sitzung ab und vergleichen Sie ihn dann mit dem im Formular eingegebenen Bestätigungscode.

Hier sind nur einfache Anweisungen, die URL-Konfiguration und der Front-End-Code werden nicht angegeben.

Das obige ist der detaillierte Inhalt vonEinführung in die Methode zum Generieren von Bestätigungscodebildern in Python3 Pillow. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn