国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

python:使用PIL,制作并驗證圖片驗證碼

laznrbfe / 465人閱讀

摘要:驗證碼制作模塊自帶數(shù)字字母特殊字符變量集合,不需要我們手寫集合生成隨機生成數(shù)字或字母生成干擾字符定義干擾字符顏色生成驗證碼建議下載幾款字體,變換下風(fēng)格,我在粒定義了路徑,這里就直接導(dǎo)入了填充顏色填充驗證碼填充驗證碼路由配置前端配置郵

驗證碼制作
#string模塊自帶數(shù)字、字母、特殊字符變量集合,不需要我們手寫集合
import string
import random
import os
import uuid

import settings
from  PIL import Image, ImageDraw, ImageColor, ImageFilter, ImageFont


class Code(object):
    # 生成隨機生成數(shù)字或字母
    def random_hexdigits(self, len=1):
        return random.sample(string.hexdigits, len)
    
    # 生成干擾字符
    def punctuation(self, len=1):
        return tuple(random.sample(string.punctuation, len))
    
    # 定義干擾字符顏色
    def random_color(self, min=64, max=255):
        return tuple((random.randint(min, max) for i in range(3)))
    
    # 生成驗證碼
    def creat_code(self, width=80, height=24, color=(192, 192, 192)):
        image = Image.new("RGB", (width, height), color)
        #建議下載幾款字體,變換下風(fēng)格,我在setting粒定義了static路徑,這里就直接導(dǎo)入了
        font = ImageFont.truetype(os.path.join(settings.STATICPATH, "fonts/Lora-Regular.ttf"), 20)
        draw = ImageDraw.Draw(image)
        self.fill_color(draw, image, 5)
        self.fill_dischar(draw, image, 10)
        code = self.fill_char(draw, image, 4, 10, font)
        image_name = "{}.jpeg".format(uuid.uuid4().hex)
        image_path = os.path.join(settings.STATICPATH, "code/{}".format(image_name))
        print(image_path)
        image.save(image_path)
        return {"code": code, "image_path": image_path}
    
    # 填充顏色
    def fill_color(self, draw, image, interval):
        for i in range(0, image.width, interval):
            for j in range(0, image.height, interval):
                draw.point((i, j), fill=self.random_color())
    
    # 填充驗證碼
    def fill_dischar(self, draw, image, interval):
        for i in range(0, image.width, interval):
            dis = self.punctuation()
            j = random.randrange(3, image.height - 3)
            draw.text((i, j), dis[0], fill=self.random_color(64, 255))
    
    # 填充驗證碼
    def fill_char(self, draw, image, num, interval, font):
        code = ""
        for i in range(num):
            cha = self.random_hexdigits()
            code += str(cha[0])
            j = random.randrange(0, 5)
            # print(cha)
            # print(image.width*(i/num)+interval,j)
            draw.text((image.width * (i / num) + interval, j), cha[0], fill=self.random_color(32, 127), font=font)
        return code


if __name__ == "__main__":
    code = Code()
    print(code.creat_code())
flask路由配置
import os
from flask import Flask, Response
from flask import render_template
from utils.code import Code

app = Flask(__name__)


@app.route("/")
def Register():
    return render_template("verify.html")


@app.route("/codes/")
def code():
    infor = Code().creat_code()
    image_path = infor["image_path"]
    code = infor["code"]
    
    print(image_path)
    with open(image_path, "rb") as f:
        image_content = f.read()
    os.remove(image_path)
    return Response(image_content, mimetype="jpeg")


if __name__ == "__main__":
    app.run(debug=True)
前端配置
 
引用

github源碼

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/44623.html

相關(guān)文章

  • 純代系列:Python實現(xiàn)驗證圖片(PIL庫經(jīng)典用法用法,爬蟲12306思路)

    摘要:現(xiàn)在的網(wǎng)頁中,為了防止機器人提交表單,圖片驗證碼是很常見的應(yīng)對手段之一?,F(xiàn)在就給出用的庫實現(xiàn)驗證碼圖片的代碼。代碼中有詳細注釋。生成的驗證碼圖片效果這時候,細心的同學(xué)可能要問,如果每次生成驗證碼,都要先保存生成的圖片,再顯示到頁面。 現(xiàn)在的網(wǎng)頁中,為了防止機器人提交表單,圖片驗證碼是很常見的應(yīng)對手段之一。這里就不詳細介紹了,相信大家都遇到過。 現(xiàn)在就給出用Python的PIL庫實現(xiàn)驗證...

    teren 評論0 收藏0
  • 使用Flask-WTF制作一個帶驗證的登陸表單

    摘要:目前還不是很熟悉的驗證表單的原理,比如驗證應(yīng)該是用,這種就是放在后端處理的。此時就需要手動控制表單的生成。如果表單驗證失敗,失敗的消息保存在中。 Flask-WTF遇到的坑 在使用Flask-WTF的時候,使用qucik_form()快速生成表單的確是很爽,但是生成的表單的樣式并不是想要的,這個時候就不能使用qucik_form()了。 PS:目前還不是很熟悉Flask-WTF的驗證表...

    i_garfileo 評論0 收藏0
  • python開發(fā)時幾種安全驗證的實現(xiàn)

    摘要:在這兩種情況下,如果你簽名的都是用戶,那么該用戶可以在激活賬戶和升級賬戶時,復(fù)用的可變部分。變量是一個元組,包括一個透視變換的系數(shù)。 額,一個突然的交流讓我想起來我耽擱許久各種驗證的實現(xiàn)遲遲沒做過趁著這個機會就搞了一下分為三部分:郵箱驗證,短信驗證,圖片驗證碼 郵箱驗證 這個部分是主要參考的經(jīng)典書籍-狗書思路就是根據(jù)用戶某些信息通過JSON Web簽名生成token,然后再發(fā)送郵件驗證...

    int64 評論0 收藏0
  • OCR識別驗證

    摘要:識別網(wǎng)站驗證碼詳見維基百科或者百度百科識別的驗證碼原理采集一批驗證碼,根據(jù)圖片特點進行初步處理二值化灰度化濾波降噪等處理然后分割圖片,旋轉(zhuǎn)圖片,模板選取,訓(xùn)練算法,讓它更準確。 最近在爬某網(wǎng)站,老是蹦出來驗證碼,就想著找個OCR破了這個驗證碼,然后就開始了OCR探索之旅。 首先簡單說一下什么是OCR OCR是(Optical Character Recognition,光學(xué)字符識別)的...

    Yangyang 評論0 收藏0
  • 驗證識別

    摘要:下面我們便來講種驗證碼的識別方式和一些思路。哈哈庫其實,驗證碼識別歸根到底還是對各種各樣圖片的識別和操作,中有很對圖像處理的庫,其中就是其中之一。所以在處理驗證碼識別之前,必須先了解庫和。第五步,按照規(guī)定軌跡進行拖動,完成驗證。 寫在前面 現(xiàn)在,很多網(wǎng)站采取各種各樣的措施來反爬蟲,其中之一就是使用驗證碼。當我們訪問網(wǎng)頁時,必須先通過驗證碼才能夠訪問頁面。下面我們便來講2種驗證碼的識別方...

    keke 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<