Python制作圖片驗證碼?也就三行代碼罷了
?現(xiàn)在驗證碼的種類真的是越來越多,短信驗證碼、語音驗證碼、圖片驗證碼、滑塊驗證碼 ... 我們在 PC 的網(wǎng)頁端或者手機上的 app 進行登錄或者注冊時,應(yīng)該總會遇見圖片驗證碼,比如下面這類:

Pillow庫
1、Image:含有圖片對象主體上的一些應(yīng)用 2、ImageDraw:畫筆,用來向圖片上添加驗證碼 3、ImageFont:設(shè)置驗證碼的字體形式 4、ImageFilter:對圖片驗證碼進行模糊處理
from?PIL?import?Image,ImageDraw,ImageFont,ImageFilter
import?random,string
#獲取隨機4個字符組合
def?getRandomChar():
????chr_all?=?string.ascii_letters+string.digits
????chr_4?=?''.join(random.sample(chr_all,4))
????return?chr_4
#獲取隨機顏色
def?getRandomColor(low,high):
????return?(random.randint(low,high),random.randint(low,high),random.randint(low,high))
#制作驗證碼圖片
def?getPicture():
????width,height?=?180,60
????#創(chuàng)建空白畫布
????image?=?Image.new('RGB',(width,height),getRandomColor(20,100))
????#驗證碼的字體
????font?=?ImageFont.truetype('C:/Windows/fonts/stxinwei.ttf',40)
????#創(chuàng)建畫筆
????draw?=?ImageDraw.Draw(image)
????#獲取驗證碼
????char_4?=?getRandomChar()
????#向畫布上填寫驗證碼
????for?i?in?range(4):
????????draw.text((40*i+10,0),char_4[i],font?=?font,fill=getRandomColor(100,200))
????#繪制干擾點
????for?x?in?range(random.randint(200,600)):
????????x?=?random.randint(1,width-1)
????????y?=?random.randint(1,height-1)
????????draw.point((x,y),fill=getRandomColor(50,150))
????#模糊處理
????image?=?image.filter(ImageFilter.BLUR)
????image.save('./%s.jpg'?%?char_4)
abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789

captcha庫

pip?install?captcha?-i?https://pypi.tuna.tsinghua.edu.cn/simple
from?captcha.image?import?ImageCaptcha
import?random,string
chr_all?=?string.ascii_letters?+?string.digits
chr_4?=?''.join(random.sample(chr_all,?4))
image?=?ImageCaptcha().generate_image(chr_4)
image.save('./%s.jpg'?%?chr_4)

gvcode庫
pip?install?graphic-verification-code?-i?https://pypi.tuna.tsinghua.edu.cn/simple
import?gvcode
s,v?=?gvcode.generate()
s.save('./%s.jpg'?%?v)
print(type(s))
print(v)
print(type(v))


說在最后
python爬蟲人工智能大數(shù)據(jù)公眾號

評論
圖片
表情
