Python實(shí)現(xiàn)隨機(jī)生成圖片驗(yàn)證碼詳解
使用python生成一個(gè)圖片驗(yàn)證碼,隨機(jī)的,可以由于驗(yàn)證人機(jī)和別的啊,很方便很簡(jiǎn)單
導(dǎo)入模塊
import random from PIL import Image,ImageFont,ImageDraw
生成隨機(jī)驗(yàn)證碼
def rndtxt(): txt_list = [] # 大寫字母 txt_list.extend([i for i in range(65,90)]) # 小寫字母 txt_list.extend([i for i in range(97,123)]) # 數(shù)字 txt_list.extend([i for i in range(48,57)]) return chr(txt_list[random.randint(0,len(txt_list)-1)])
作為待會(huì)生成的圖片背景色和字體色
def rndbgcolor(): # 背景顏色 return (random.randint(64,255),random.randint(64,255),random.randint(64,255)) def rndtxtcolor2(): # 字體顏色 return (random.randint(32,127),random.randint(32,127),random.randint(32,127))
進(jìn)行生成打印驗(yàn)證碼并以圖片的形式打開(kāi),不保存圖片文件,僅用于一時(shí)的驗(yàn)證碼驗(yàn)證
def code(): weight = 240 hight = 60 image = Image.new('RGB',(weight,hight),(255,255,255)) font = ImageFont.truetype('msyh.ttc',36) draw = ImageDraw.Draw(image) # 填充背景顏色 for x in range(weight): for y in range(hight): draw.point((x,y),fill=rndbgcolor()) # 生成隨機(jī)驗(yàn)證碼 for T in range(4): rndtxt_2 = rndtxt() print(rndtxt_2) # 打印驗(yàn)證碼的值 draw.text((60 * T + 10,10),rndtxt_2,font=font,fill=rndtxtcolor2()) image.show()
完整代碼:
#!/usr/bin/env python3 import random from PIL import Image,ImageFont,ImageDraw def rndtxt(): txt_list = [] # 大寫字母 txt_list.extend([i for i in range(65,90)]) # 小寫字母 txt_list.extend([i for i in range(97,123)]) # 數(shù)字 txt_list.extend([i for i in range(48,57)]) return chr(txt_list[random.randint(0,len(txt_list)-1)]) def rndbgcolor(): # 背景顏色 return (random.randint(64,255),random.randint(64,255),random.randint(64,255)) def rndtxtcolor2(): # 字體顏色 return (random.randint(32,127),random.randint(32,127),random.randint(32,127)) def code(): weight = 240 hight = 60 image = Image.new('RGB',(weight,hight),(255,255,255)) font = ImageFont.truetype('msyh.ttc',36) draw = ImageDraw.Draw(image) # 填充背景顏色 for x in range(weight): for y in range(hight): draw.point((x,y),fill=rndbgcolor()) # 生成隨機(jī)驗(yàn)證碼 for T in range(4): rndtxt_2 = rndtxt() print(rndtxt_2) # 打印驗(yàn)證碼的值 draw.text((60 * T + 10,10),rndtxt_2,font=font,fill=rndtxtcolor2()) image.show() code()
以上就是Python實(shí)現(xiàn)隨機(jī)生成圖片驗(yàn)證碼詳解的詳細(xì)內(nèi)容,更多關(guān)于Python圖片驗(yàn)證碼的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
- Python+selenium破解拼圖驗(yàn)證碼的腳本
- 利用Python生成隨機(jī)驗(yàn)證碼詳解
- Python+Selenium+Pytesseract實(shí)現(xiàn)圖片驗(yàn)證碼識(shí)別
- Python實(shí)現(xiàn)新版正方系統(tǒng)滑動(dòng)驗(yàn)證碼識(shí)別
- python通過(guò)pillow識(shí)別動(dòng)態(tài)驗(yàn)證碼的示例代碼
- python調(diào)用文字識(shí)別OCR輕松搞定驗(yàn)證碼
- 基于Python實(shí)現(xiàn)原生的登錄驗(yàn)證碼詳情
- Python編程使用DRF實(shí)現(xiàn)一次性驗(yàn)證碼OTP
- 詳解Python結(jié)合Genetic?Algorithm算法破解網(wǎng)易易盾拼圖驗(yàn)證
相關(guān)文章
Django Rest framework權(quán)限的詳細(xì)用法
這篇文章主要介紹了Django Rest framework權(quán)限的詳細(xì)用法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-07-07python數(shù)據(jù)操作之lambda表達(dá)式詳情
這篇文章主要介紹了python數(shù)據(jù)操作之lambda表達(dá)式詳情,文章基于python的相關(guān)資料展開(kāi)lambda表達(dá)式具體的內(nèi)容,感興趣的小伙伴可以參考一下2022-05-05python中for用來(lái)遍歷range函數(shù)的方法
今天小編就為大家分享一篇python中for用來(lái)遍歷range函數(shù)的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-06-06Python-split()函數(shù)實(shí)例用法講解
在本篇文章里小編給大家整理的是一篇關(guān)于Python-split()函數(shù)實(shí)例用法講解,有興趣的朋友們可以學(xué)習(xí)下。2020-12-12使用Python Fast API發(fā)布API服務(wù)的過(guò)程詳解
這篇文章主要介紹了使用Python Fast API發(fā)布API服務(wù),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-04-04pytorch 6 batch_train 批訓(xùn)練操作
這篇文章主要介紹了pytorch 6 batch_train 批訓(xùn)練操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-05-05Python使用progressbar模塊實(shí)現(xiàn)的顯示進(jìn)度條功能
這篇文章主要介紹了Python使用progressbar模塊實(shí)現(xiàn)的顯示進(jìn)度條功能,簡(jiǎn)單介紹了progressbar模塊的安裝,并結(jié)合實(shí)例形式分析了Python使用progressbar模塊顯示進(jìn)度條的相關(guān)操作技巧,需要的朋友可以參考下2018-05-05