Python中的彩色驗(yàn)證碼是一個(gè)非常有意思的項(xiàng)目,它可以讓我們?cè)诰W(wǎng)站上添加額外的身份驗(yàn)證層,以確保只有真正的用戶才能訪問(wèn)我們的網(wǎng)站。下面是Python彩色驗(yàn)證碼的實(shí)現(xiàn)代碼:
import random def generate_code(width, height): """生成彩色驗(yàn)證碼""" # 可用的顏色 colors = ['red', 'blue', 'green', 'purple', 'yellow', 'orange'] # 可用的字符 characters = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789' # 隨機(jī)字符 code = ''.join(random.choice(characters) for i in range(4)) # 創(chuàng)建畫布 from PIL import Image, ImageDraw, ImageFont im = Image.new('RGB', (width, height), random.choice(colors)) # 創(chuàng)建畫筆 draw = ImageDraw.Draw(im) # 隨機(jī)添加干擾線 for i in range(random.randint(1, 5)): draw.line((random.randint(1, width), random.randint(1, height), random.randint(1, width), random.randint(1, height)), fill=random.choice(colors), width=random.randint(1, 3)) # 隨機(jī)添加干擾點(diǎn) for i in range(random.randint(50, 200)): draw.point((random.randint(1, width), random.randint(1, height)), fill=random.choice(colors)) # 隨機(jī)設(shè)置字體 font = ImageFont.truetype('arial.ttf', 36) # 隨機(jī)添加字符 for i in range(4): draw.text((random.randint(2, 18) + i * 20, random.randint(2, 10)), code[i], font=font, fill=random.choice(colors)) # 保存圖片 im.save('code.png') if __name__ == '__main__': generate_code(120, 30)
實(shí)現(xiàn)代碼非常簡(jiǎn)單,我們創(chuàng)建了一個(gè)Python函數(shù),用于生成彩色驗(yàn)證碼。函數(shù)使用Pillow庫(kù)創(chuàng)建一個(gè)新圖像,并使用ImageDraw和ImageFont庫(kù)添加線條,點(diǎn)和隨機(jī)字符。最后,我們將圖像保存為.png文件,以便在網(wǎng)頁(yè)上使用。