1. 程式人生 > >python簡單驗證碼

python簡單驗證碼

turn 內存 構造 install pillow del all idt err

安裝圖片處理模塊pillow : pip install pillow

pillow官網:http://pillow.readthedocs.io/en/latest/

在views.py添加視圖

#驗證碼
from django.http import HttpResponse
def verifyCode(request):
        # 引入繪圖模塊
        from PIL import Image, ImageDraw, ImageFont
        # 引入隨機函數模塊
        import random
        # 定義變量,用於畫面的背景色、寬、高
bgcolor = (random.randrange(20, 100), random.randrange( 20, 100), 255) width = 100 height = 25 # 創建畫面對象 im = Image.new(RGB, (width, height), bgcolor) # 創建畫筆對象 draw = ImageDraw.Draw(im) # 調用畫筆的point()函數繪制噪點 for i in range(0, 100): xy
= (random.randrange(0, width), random.randrange(0, height)) fill = (random.randrange(0, 255), 255, random.randrange(0, 255)) draw.point(xy, fill=fill) # 定義驗證碼的備選值 str1 = ABCD123EFGHIJK456LMNOPQRS789TUVWXYZ0 # 隨機選取4個值作為驗證碼 rand_str = ‘‘ for
i in range(0, 4): rand_str += str1[random.randrange(0, len(str1))] # 構造字體對象 font = ImageFont.truetype(Arial.ttf, 23) # 構造字體顏色 fontcolor = (255, random.randrange(0, 255), random.randrange(0, 255)) # 繪制4個字 draw.text((5, 2), rand_str[0], font=font, fill=fontcolor) draw.text((25, 2), rand_str[1], font=font, fill=fontcolor) draw.text((50, 2), rand_str[2], font=font, fill=fontcolor) draw.text((75, 2), rand_str[3], font=font, fill=fontcolor) # 釋放畫筆 del draw # 存入session,用於做進一步驗證 request.session[verifycode] = rand_str # 內存文件操作 #import cStringIO python 2的用法 #buf = cStringIO.StringIO() #buf = io.StringIO() import io #從Python 3.0開始,StringIO和cStringIO模塊已經取消。通過import io模塊代替 buf = io.BytesIO() # 將圖片保存在內存中,文件類型為png im.save(buf, png) # 將內存中的圖片數據返回給客戶端,MIME類型為圖片png return HttpResponse(buf.getvalue(), image/png)

若報錯OSError cannot open resource 沒有此字體

可以去自己的python目錄下搜索ttf 然後替換為自己的絕對路徑 例:C:/Users/Administrator/font/Arial.ttf

效果

技術分享圖片

========================================================================================

配置url

  path(‘verifyCode/‘,views.verifyCode)

頁面顯示驗證碼 src指向驗證碼url

  <img id=‘verifyCode/‘ src="/verifyCode/" alt="CheckCode"/>

python簡單驗證碼