Python是一種廣泛使用的編程語言,支持多種編程范式,包括過程式、面向對象和函數(shù)式編程。其中一個常見的應用就是拼圖驗證碼。
from PIL import Image, ImageDraw, ImageFont
import random
# 定義常量
FONT_PATH = "arialbd.ttf"
CODE_NUM = 4
IMAGE_WIDTH = 120
IMAGE_HEIGHT = 30
COLOR_BG = (255, 255, 255)
COLOR_LINE = (255, 0, 0)
COLOR_CODE = (0, 0, 255)
FONT_SIZE = 22
# 生成驗證碼
def generate_code():
code = ""
for i in range(CODE_NUM):
num = random.randint(0, 9)
letter = chr(random.randint(65, 90))
code += str(random.choice([num, letter]))
return code
# 生成干擾線
def generate_line(draw):
for i in range(5):
x1 = random.randint(0, IMAGE_WIDTH)
y1 = random.randint(0, IMAGE_HEIGHT)
x2 = random.randint(0, IMAGE_WIDTH)
y2 = random.randint(0, IMAGE_HEIGHT)
draw.line((x1, y1, x2, y2), fill=COLOR_LINE)
# 生成驗證碼圖片
def generate_image():
# 創(chuàng)建畫布
image = Image.new('RGB', (IMAGE_WIDTH, IMAGE_HEIGHT), COLOR_BG)
# 創(chuàng)建畫筆
draw = ImageDraw.Draw(image)
# 生成驗證碼
code = generate_code()
# 設置字體
font = ImageFont.truetype(FONT_PATH, size=FONT_SIZE)
# 寫入驗證碼
for i in range(CODE_NUM):
x = IMAGE_WIDTH // (CODE_NUM + 1) * (i + 1)
y = IMAGE_HEIGHT // 2
draw.text((x, y), code[i], font=font, fill=COLOR_CODE)
# 生成干擾線
generate_line(draw)
# 保存圖片
image.save('code.png')
if __name__ == '__main__':
generate_image()
以上代碼是使用Python實現(xiàn)拼圖驗證碼的方法。其中,通過PIL庫創(chuàng)建畫布和畫筆,并通過隨機數(shù)生成驗證碼和干擾線。最后將生成的圖片保存到本地。