国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

python3 pillow生成簡單驗(yàn)證碼圖片的示例

2020-02-16 10:15:16
字體:
供稿:網(wǎng)友

使用Python的pillow模塊 random 模塊隨機(jī)生成驗(yàn)證碼圖片,并應(yīng)用到Django項目中

安裝pillow

$ pip3 install pillow

生成驗(yàn)證碼圖片

/vericode.pyfrom PIL import Image,ImageDraw,ImageFont,ImageFilterimport random #隨機(jī)碼 默認(rèn)長度=1def random_code(lenght=1):    code = ''  for char in range(lenght):    code += chr(random.randint(65,90))  return code #隨機(jī)顏色 默認(rèn)顏色范圍【1,255】def random_color(s=1,e=255):  return (random.randint(s,e),random.randint(s,e),random.randint(s,e)) #生成驗(yàn)證碼圖片 #length 驗(yàn)證碼長度 #width 圖片寬度 #height 圖片高度 #返回驗(yàn)證碼和圖片def veri_code(lenght=4,width=160,height=40):  #創(chuàng)建Image對象  image = Image.new('RGB',(width,height),(255,255,255))  #創(chuàng)建Font對象  font = ImageFont.truetype('Arial.ttf',32)  #創(chuàng)建Draw對象  draw = ImageDraw.Draw(image)  #隨機(jī)顏色填充每個像素  for x in range(width):    for y in range(height):      draw.point((x,y),fill=random_color(64,255))  #驗(yàn)證碼  code = random_code(lenght)  #隨機(jī)顏色驗(yàn)證碼寫到圖片上  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

應(yīng)用

編寫Django應(yīng)用下的視圖函數(shù)

/views.pyfrom . import vericode.pyfrom io import BytesIOfrom django.http import HttpResponsedef 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'(默認(rèn)添加)
verify_code視圖函數(shù)將驗(yàn)證碼添加到session中和驗(yàn)證碼圖片一起發(fā)送給瀏覽器,當(dāng)提交表單到submit_xxx()時,先從session中獲取驗(yàn)證碼,再對比從表單中的輸入的驗(yàn)證碼。

這里只是簡單說明,url配置和前端代碼未給出。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持武林站長站。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 遵义市| 安国市| 揭东县| 漠河县| 星子县| 万源市| 黑河市| 沈丘县| 合阳县| 商城县| 通道| 汉沽区| 忻城县| 新竹县| 壤塘县| 绥芬河市| 名山县| 英超| 精河县| 苗栗市| 钦州市| 三亚市| 乐陵市| 福泉市| 长泰县| 舒城县| 镇坪县| 福安市| 福清市| 潼关县| 临潭县| 长兴县| 绍兴市| 松潘县| 恩平市| 通化市| 溧阳市| 柳河县| 台州市| 吕梁市| 赤水市|