python 3 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()시 세 션 에서 인증 코드 를 가 져 온 다음 폼 에서 입력 한 인증 코드 를 비교 합 니 다.
url 설정 과 전단 코드 가 제시 되 지 않 았 음 을 간단하게 설명 합 니 다.
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
로마 숫자를 정수로 또는 그 반대로 변환그 중 하나는 로마 숫자를 정수로 변환하는 함수를 만드는 것이었고 두 번째는 그 반대를 수행하는 함수를 만드는 것이었습니다. 문자만 포함합니다'I', 'V', 'X', 'L', 'C', 'D', 'M' ; 문자열이 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.