国产99久久精品_欧美日本韩国一区二区_激情小说综合网_欧美一级二级视频_午夜av电影_日本久久精品视频

最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當前位置: 首頁 - 科技 - 知識百科 - 正文

Python編寫生成驗證碼的腳本的教程

來源:懂視網 責編:小采 時間:2020-11-27 14:41:44
文檔

Python編寫生成驗證碼的腳本的教程

Python編寫生成驗證碼的腳本的教程:在web開發中經常用到驗證碼,為了防止機器人注冊或者惡意登陸和查詢等,作用不容小覷 但是驗證碼其實不是一個函數就能搞定的,它需要生成圖片和水印,其實每種語言都有相關的函數生成圖片和文字水印。包括我熟悉的php,呵呵,今天主要來分享如何用python
推薦度:
導讀Python編寫生成驗證碼的腳本的教程:在web開發中經常用到驗證碼,為了防止機器人注冊或者惡意登陸和查詢等,作用不容小覷 但是驗證碼其實不是一個函數就能搞定的,它需要生成圖片和水印,其實每種語言都有相關的函數生成圖片和文字水印。包括我熟悉的php,呵呵,今天主要來分享如何用python

在web開發中經常用到驗證碼,為了防止機器人注冊或者惡意登陸和查詢等,作用不容小覷

但是驗證碼其實不是一個函數就能搞定的,它需要生成圖片和水印,其實每種語言都有相關的函數生成圖片和文字水印。包括我熟悉的php,呵呵,今天主要來分享如何用python生成驗證碼。

python生成驗證碼主要用到如下模塊:Image, ImageDraw, ImageFont, ImageFilter和隨機數生成模塊Random。

代碼如下:

#!/usr/bin/env python
#coding=utf-8
import random
import Image, ImageDraw, ImageFont, ImageFilter
 
_letter_cases = "abcdefghjkmnpqrstuvwxy" # 小寫字母,去除可能干擾的i,l,o,z
_upper_cases = _letter_cases.upper() # 大寫字母
_numbers = ''.join(map(str, range(3, 10))) # 數字
init_chars = ''.join((_letter_cases, _upper_cases, _numbers))
fontType="/usr/share/fonts/truetype/freefont/FreeSans.ttf"
 
def create_validate_code(size=(120, 30),
 chars=init_chars,
 img_type="GIF",
 mode="RGB",
 bg_color=(255, 255, 255),
 fg_color=(0, 0, 255),
 font_size=18,
 font_type=fontType,
 length=4,
 draw_lines=True,
 n_line=(1, 2),
 draw_points=True,
 point_chance = 2):
 '''
 @todo: 生成驗證碼圖片
 @param size: 圖片的大小,格式(寬,高),默認為(120, 30)
 @param chars: 允許的字符集合,格式字符串
 @param img_type: 圖片保存的格式,默認為GIF,可選的為GIF,JPEG,TIFF,PNG
 @param mode: 圖片模式,默認為RGB
 @param bg_color: 背景顏色,默認為白色
 @param fg_color: 前景色,驗證碼字符顏色,默認為藍色#0000FF
 @param font_size: 驗證碼字體大小
 @param font_type: 驗證碼字體,默認為 ae_AlArabiya.ttf
 @param length: 驗證碼字符個數
 @param draw_lines: 是否劃干擾線
 @param n_lines: 干擾線的條數范圍,格式元組,默認為(1, 2),只有draw_lines為True時有效
 @param draw_points: 是否畫干擾點
 @param point_chance: 干擾點出現的概率,大小范圍[0, 100]
 @return: [0]: PIL Image實例
 @return: [1]: 驗證碼圖片中的字符串
 '''
 
 width, height = size # 寬, 高
 img = Image.new(mode, size, bg_color) # 創建圖形
 draw = ImageDraw.Draw(img) # 創建畫筆
 if draw_lines:
 create_lines(draw,n_line,width,height)
 if draw_points:
 create_points(draw,point_chance,width,height)
 strs = create_strs(draw,chars,length,font_type, font_size,width,height,fg_color)
 
 # 圖形扭曲參數
 params = [1 - float(random.randint(1, 2)) / 100,
 0,
 0,
 0,
 1 - float(random.randint(1, 10)) / 100,
 float(random.randint(1, 2)) / 500,
 0.001,
 float(random.randint(1, 2)) / 500
 ]
 img = img.transform(size, Image.PERSPECTIVE, params) # 創建扭曲
 
 img = img.filter(ImageFilter.EDGE_ENHANCE_MORE) # 濾鏡,邊界加強(閾值更大)
 
 return img, strs
 
 
def create_lines(draw,n_line,width,height):
 '''繪制干擾線'''
 line_num = random.randint(n_line[0],n_line[1]) # 干擾線條數
 for i in range(line_num):
 # 起始點
 begin = (random.randint(0, width), random.randint(0, height))
 #結束點
 end = (random.randint(0, width), random.randint(0, height))
 draw.line([begin, end], fill=(0, 0, 0))
 
def create_points(draw,point_chance,width,height):
 '''繪制干擾點'''
 chance = min(100, max(0, int(point_chance))) # 大小限制在[0, 100]
 
 for w in xrange(width):
 for h in xrange(height):
 tmp = random.randint(0, 100)
 if tmp > 100 - chance:
 draw.point((w, h), fill=(0, 0, 0))
 
def create_strs(draw,chars,length,font_type, font_size,width,height,fg_color):
 '''繪制驗證碼字符'''
 '''生成給定長度的字符串,返回列表格式'''
 c_chars = random.sample(chars, length)
 strs = ' %s ' % ' '.join(c_chars) # 每個字符前后以空格隔開
 
 font = ImageFont.truetype(font_type, font_size)
 font_width, font_height = font.getsize(strs)
 
 draw.text(((width - font_width) / 3, (height - font_height) / 3),strs, font=font, fill=fg_color)
 
 return ''.join(c_chars)
 
 
if __name__ == "__main__":
 code_img = create_validate_code()
 code_img[0].save("validate.gif", "GIF")
 print code_img[1]

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

Python編寫生成驗證碼的腳本的教程

Python編寫生成驗證碼的腳本的教程:在web開發中經常用到驗證碼,為了防止機器人注冊或者惡意登陸和查詢等,作用不容小覷 但是驗證碼其實不是一個函數就能搞定的,它需要生成圖片和水印,其實每種語言都有相關的函數生成圖片和文字水印。包括我熟悉的php,呵呵,今天主要來分享如何用python
推薦度:
標簽: 生成 驗證碼 實現
  • 熱門焦點

最新推薦

猜你喜歡

熱門推薦

專題
Top
主站蜘蛛池模板: 欧美亚洲第一页 | 国产人成精品综合欧美成人 | 国产在线欧美日韩精品一区二区 | 亚洲另类欧美日韩 | 国产成人精品日本亚洲语音1 | 亚洲精品乱码久久久久 | 欧美日韩亚洲国产 | 久久一区二区三区四区 | 午夜免费啪啪 | 欧美日韩国产一区 | 一级毛片成人免费看a | 成人国产一区二区 | 韩国一区 | 欧美第一页 | 偷拍亚洲欧美 | 黄色二级毛片 | 欧美中出 | 一97日本道伊人久久综合影院 | 国产在线高清不卡免费播放 | 久久久精品麻豆 | 久久激情综合网 | a欧美在线| 欧美成人一区二区三区 | 日韩国产综合 | 亚州一级| 国产呦系列 欧美呦 日韩呦 | 九九久久亚洲综合久久久 | 国产未成女年一区二区 | 免费在线观看一区 | 快播电影网日韩新片 | 免费一看一级毛片全播放 | 视频在线观看国产 | 国产在线每日更新 | 欧美一区二区三区不卡免费 | 999久久久免费精品国产牛牛 | 在线观看亚洲一区二区 | 亚洲入口 | 午夜国产在线 | 欧美综合国产精品日韩一 | 精品日本一区二区三区在线观看 | 日韩欧美影院 |