Django 生成隨機驗證碼圖片

[TOC]python

Django生成驗證碼圖片

用到的模塊: io, random, pillow(須要安裝)django

安裝pillow模塊:session

# CMD運行下面命令
pip install pillow

代碼:dom

# views.py
import random
from PIL import Image, ImageDraw, ImageFont
from io import BytesIO
'''
BytesIO: 可以存儲數據,並以二進制的格式再返回
Image: 產生圖片
ImageDraw: 產生畫筆
ImageFont: 控制字體樣式
'''

# 隨機生成三原色
def get_random():
    col_num = random.randint(0, 255)
    return col_num, col_num, col_num

# 生成隨機驗證碼圖片
def get_code(request):
    # 生成圖片  參數位置對應: 顏色樣式, (長, 寬), 三原色
    img_obj = Image.new('RGB', (263, 33), get_random())
    # 在圖片上生成一個畫筆對象
    img_draw = ImageDraw.Draw(img_obj)
    # 字體樣式 
    img_font = ImageFont.truetype('字體路徑', '字體大小int類型')
    
    # 隨機生成驗證碼
    code = ''
    for i in range(5):
        random_upper = chr(random.ranint(65, 90))
        random_lower = chr(random.ranint(97, 122))
        random_int = str(random.ranint(0, 9))
        temp = random.choice([random_int, random_lower, random_upper])
        
        # 將產生的而隨機字符寫在圖片上
        # 對應參數: temp:寫的內容, get_random():三原色, img_font:字體
        img_draw.text(('x軸座標int', 'y軸座標'), temp, get_random(), img_font) 
        code += temp
      
	# 將隨機字符串存入session
    request.session['code'] = code
    
    io_obj = BytesIO()
    img_obj.save(io_obj, 'png')
    
    return HttpResponse(io_obj.getvalue())

滑動驗證碼參考:極驗 傳送門:https://docs.geetest.com/字體

相關文章
相關標籤/搜索