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)證碼并以圖片的形式打開,不保存圖片文件,僅用于一時(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)文章
Tensorflow: 從checkpoint文件中讀取tensor方式
今天小編就為大家分享一篇Tensorflow: 從checkpoint文件中讀取tensor方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-02-02
Python使用Py2neo創(chuàng)建Neo4j的節(jié)點(diǎn)和關(guān)系
Neo4j是一款開源圖數(shù)據(jù)庫(kù),使用Python語(yǔ)言訪問Neo4j可以使用Py2neo。本文介紹了使用Py2neo訪問Neo4j,批量創(chuàng)建節(jié)點(diǎn)和關(guān)系的方法2021-08-08
python查找目錄下指定擴(kuò)展名的文件實(shí)例
這篇文章主要介紹了python查找目錄下指定擴(kuò)展名的文件,實(shí)例分析了Python文件查詢的技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2015-04-04
淺談python中統(tǒng)計(jì)計(jì)數(shù)的幾種方法和Counter詳解
今天小編就為大家分享一篇淺談python中統(tǒng)計(jì)計(jì)數(shù)的幾種方法和Counter詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-11-11
對(duì)python 矩陣轉(zhuǎn)置transpose的實(shí)例講解
下面小編就為大家分享一篇對(duì)python 矩陣轉(zhuǎn)置transpose的實(shí)例講解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-04-04
python實(shí)現(xiàn)類似Netty功能的異步編程
本文將介紹如何使用Python來(lái)實(shí)現(xiàn)本文將介紹如何使用Python來(lái)實(shí)現(xiàn)類似于Netty的功能,并提供一些代碼示例來(lái)幫助讀者理解,能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-11-11
Jupyter導(dǎo)入自定義模塊及導(dǎo)入后TypeError錯(cuò)誤問題及解決
這篇文章主要介紹了Jupyter導(dǎo)入自定義模塊及導(dǎo)入后TypeError錯(cuò)誤問題及解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-01-01
CentOS系統(tǒng)上安裝Conda的詳細(xì)指南
Conda 是一個(gè)開源的包管理系統(tǒng)和環(huán)境管理系統(tǒng),廣泛應(yīng)用于數(shù)據(jù)科學(xué)和機(jī)器學(xué)習(xí)領(lǐng)域,本文將詳細(xì)介紹如何在 CentOS 系統(tǒng)上安裝 Conda吧2025-03-03

