PIL:Python Imaging Library,已是Python平臺事實上的圖像處理標準庫了。PIL功能很是強大,但API卻很是簡單易用。前端
因爲PIL僅支持到Python 2.7,加上年久失修,因而一羣志願者在PIL的基礎上建立了兼容的版本,名字叫Pillow,支持最新Python 3.x,又加入了許多新特性,所以,咱們能夠直接安裝使用Pillow。python
from PIL import Image #生成一張圖片的第三方模塊 from PIL import ImageDraw #在圖片上寫字 from PIL import ImageFont #生成字體對象
ps:驗證碼臨時存入內存git
from io import BytesIO #內存管理器(存臨時驗證碼)
def get_code(request): # 生成一張新圖片 new_img = Image.new('RGB',(171,34),color=get_random_color()) # 把圖片放到ImageDraw.Draw內(畫筆) draw = ImageDraw.Draw(new_img) # 構造字體對象第一個參數是字體文件(ttf格式http://www.downcc.com/k/ttfziti/),第二個參數是字體大小 font = ImageFont.truetype('static/font/simsun.ttf',30) valid_code = '' for i in range(5): num_str = str(random.randint(0,9)) upper_str = chr(random.randint(65,90)) low_str = chr(random.randint(97,122)) random_str = random.choice([num_str,upper_str,low_str]) draw.text((i*28+20,1),random_str,get_random_color(),font=font) valid_code+=random_str print(valid_code) # 把驗證碼存到session request.session['valid_code']=valid_code # 打開一個內存管理器,保存進去 img = BytesIO() new_img.save(img,'png') # 從內存管理器取出img data = img.getvalue() return HttpResponse(data)
code = request.POST.get('code') if code.upper() == request.session.get('valid_code').upper(): pass
<img src="/get_code/" class="col-xs-8" style="padding-left: 5px;padding-right: 1px" alt="" height="34" id="id_img"> <script> //點擊圖片刷新功能 $("#id_img").click(function () { $(this)[0].src=$(this)[0].src+"?" }); </script>
生成隨機數顏色github
def get_random_color(): ''' 生成3個隨機數顏色 ''' return (random.randint(0,255),random.randint(0,255),random.randint(0,255))
參考該文章:點我session