Python 사이트 등록 인증 코드 생 성 클래스 구현
# -*- coding:utf-8 -*-
'''
Created on 2017 4 7
@author: Water
'''
import os
import random
import string
import sys
import math
from PIL import Image,ImageDraw,ImageFont,ImageFilter
from django.conf import settings
# ,
font_path = os.path.join('/home/workspace/aofeiKart/static', 'fonts/monaco.ttf')#settings.STATIC_ROOT, 'fonts/MONACO.TTF')
font_path = os.path.join(settings.STATIC_ROOT, 'fonts/monaco.ttf')
# print font_path
#
number = 4
#
size = (100,30)
# ,
bgcolor = (255,255,255)
# ,
fontcolor = (0,0,255)
# 。
linecolor = (255,0,0)
#
draw_line = True
#
line_number = (1,5)
#
# source = list(string.ascii_lowercase+'1234567890')
source = list('1234567890')
def gene_text():
# return '6666'
return ''.join(random.sample(source,number))#number
#
def gene_line(draw,width,height):
begin = (random.randint(0, width), random.randint(0, height))
end = (random.randint(0, width), random.randint(0, height))
draw.line([begin, end], fill = linecolor)
#
def gene_code():
width,height = size #
image = Image.new('RGBA',(width,height),bgcolor) #
font = ImageFont.truetype(font_path,25) #
draw = ImageDraw.Draw(image) #
text = gene_text() #
font_width, font_height = font.getsize(text)
draw.text(((width - font_width) / number, (height - font_height)/number),text,
font= font,fill=fontcolor) #
if draw_line:
gene_line(draw,width,height)
image = image.transform((width+20,height+10), Image.AFFINE, (1,-0.3,0,-0.1,1,0), Image.BILINEAR) #
image = image.filter(ImageFilter.EDGE_ENHANCE_MORE) # ,
image_file = text+'.png'
image_path = os.path.join(settings.STATIC_ROOT, 'images/%s'%image_file)
image.save(image_path) #
return 'http://login.chaozu.net:8000/static/images/%s'%image_file, text
if __name__ == "__main__":
print gene_code()
실현 과정 은 매우 간단 하 다.주로 두 가지 가 있다.1.PIL 라 이브 러 리 설치,글꼴 저장 디 렉 터 리 설정
2.그림 의 바 이 너 리 데이터 흐름 을 직접 되 돌려 준다 면 다음 과 같 습 니 다.
buf = io.BytesIO() #io.BytesIO() #io.StringIO() use it to fill str obj
image.save(buf, 'png')
request.session['captcha'] = text.lower()
return HttpResponse(buf.getvalue(), 'image/png') # return the image data stream as image/jpeg format, browser will treat it as an image
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Python의 None과 NULL의 차이점 상세 정보그래서 대상 = 속성 + 방법 (사실 방법도 하나의 속성, 데이터 속성과 구별되는 호출 가능한 속성 같은 속성과 방법을 가진 대상을 클래스, 즉 Classl로 분류할 수 있다.클래스는 하나의 청사진과 같아서 하나의 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.