Python使用PIL模組生成隨機驗證碼

2022-10-04 20:42:28 字數 4057 閱讀 3257

python生成隨機驗證碼,需要使用pil模組,具體內容如下

安裝:pip3 install pillow

基本使用

1. 建立

from pil import image

img = image.new(mode='rgb', size=(120, 30), color=(255, 255, 255))

# 在檢視器中開啟

# img.show()

# 儲存在本地

with open('code.png','wb') as f:

img.s**e(f,format='png')

2. 建立畫筆,用於在上畫任意內容

img = image.new(mode='rgb', size=(120, 30), color=(255, 255, 255))

draw = imagedraw.draw(img, mode='rgb')

3. 畫點

img = image.new(mode='rgb', size=(120, 30), color=(255, 255, 255))

draw = imagedraw.draw(img, mode='rgb')

# 第乙個引數:表示座標

# 第二個引數:表示顏色

draw.point([100, 100], fill="red")

draw.point([300, 300], fill=(255, 255, 255))

4. 畫線

img = image.new(mode='rgb', size=(120, 30), color=(255, 255, 255))

draw = imagedraw.draw(img, mode='rgb')

# 第乙個引數:表示起始座標和結束座標

# 第二個引數:表示顏色

draw.line((100,100,100,300), fill='red')

draw.line((100,100,300,100), fill=(255, 255, 255))

5. 畫圓

img = image.new(mode='rgb', size=(120, 30), color=(255, 255, 255))

draw = imagedraw.draw(img, mode='rgb')

# 第乙個引數:表示起始座標和結束座標(圓要畫在其中間)

# 第二個引數:表示開始角度

# 第三個引數:表示結束角度

# 第四個引數:表示顏色

draw.arc((100,100,300,300),0,90,fill="red")

6. 寫文字

img = image.new(mode='rgb', size=(120, 30), color=(255, 255, 255))

draw = imagedraw.draw(img, mode='rgb')

# 第乙個引數lmqptbl:表示起始座標

# 第二個參www.cppcns.com數:表示寫入內容

# 第三個引數:表示顏色

draw.text([0,0],'python',"red")

7. 特殊字型文字

img = image.new(mode='rgb', size=(120, 30)lmqptbl, color=(255, 255, 255))

draw = imagedraw.draw(img, mode='rgb')

# 第乙個引數:表示字型檔案路徑

# 第二個引數:表示字型大小

font = imagefont.truetype("kumo.ttf", 28)

# 第乙個引數:表示起始座標

# 第二個引數:表示寫入內容

# 第三個引數:表示顏色

# 第四個引數:表示顏色

draw.text([0, 0], 'python', "red", font=font)

驗證碼import random

def check_code(width=120, height=30, char_length=5, font_file='kumo.ttf', font_size=28):

code =

img = image.new(mode='rgb', size=(width, height), color=(255, 255, 255))

draw = imagedraw.draw(img, mode='rgb')

def rndchar():

"""生成隨機字母

:return:

"""return chr(random.randint(65, 90))

def rndcolor():

"""生成隨機顏色

:return:

"""return (random.randint(0, 255), random.randint(10, 255), random.randint(64, 255))

# 寫文字

font = imagefont.truetype(font_file, font_size)

for i in range(char_length):

char = rndchar()

code.append(char)

h = random.randint(0, 4)

draw.text([i * width / char_length, h], char, font=font, fill=rndcolor())

# 寫干擾點

for i in range(40):

draw.point([random.randint(0, width), random.randint(0, height)], fill=rndcolor())

# 寫干擾圓圈

for i in range(40):

draw.point([random.randint(0, width), random.randint(0, height)], fill=rndcolor())

x = random.randint(0, width)

y = random.randint(0, height)

draw.arc((x, y, x + 4, y + 4), 0, 90, fill=rndcolor())

# 畫干擾線

for i in range(5):

x1 = random.randint(0, width)

y1 = random.randint(0, height)

x2 = random.randint(0, width)

y2 = random.randint(0, height)

draw.line((x1, y1, x2, y2), fill=rndcolor())

img = img.filter(imagefilter.edge_enhance_more)

return img,''.join(code)

if __name__ == '__main__':

# 1. 直接開啟

# img,code = clmqptblheck_code()

# img.show()

# 2. 寫入檔案

# img,code = check_code()

# with open('code.png','wb') as f:

# img.s**e(f,format='png')

# 3. 寫入記憶體(python3)

# from io import bytesio

# stream = bytesio()

# img.s**e(stream, 'png')

# stream.getvalue()

# 4. 寫入記憶體(python2)

# import stringio

# stream = stringio.stringio()

# img.s**e(stream, 'png')

# stream.getvalue()

pass

本文標題: python使用pil模組生成隨機驗證碼

本文位址: /jiaoben/python/211698.html

Python 資料增強 PIL模組

影象操作模組 from pil import image 影象顏色增強模組 from pil import imageenhance 讀取影象 img.show 指定所需的尺寸 im resized im.resize 128,128 指定逆時針旋轉的角度 img rotate img.rotate...

python的PIL模組安裝

一 centos安裝pil 尤其重要,否則會報錯 yum install python devel yum install libjpeg libjpeg devel zlib zlib devel freetype freetype devel lcms lcms devel yum instal...

Python離線安裝PIL 模組的方法

python的庫一般都用pip安裝。但是有時候也會出現 安裝失敗的情況,如下圖安裝pil模組時報錯 這時候可以採取離線安裝的方式 一 首先 離線安裝包 pil官方版不支援py3,不過有非官方那個的替代品pillow,位址 注意選擇版本 我的python是python2程式設計客棧.7,系統是64位的...