使用 Python 這個庫,生成各種類型的驗證碼
在 Python 中生成驗證碼通常涉及使用隨機數、圖像處理庫以及字體文件等。以下是一個簡單的示例,演示如何使用 Python 和 Pillow 庫來生成包含隨機字符的簡單驗證碼圖像:
```python
from PIL import Image, ImageDraw, ImageFont
import random
import string
# 生成指定長度的隨機字符串
def generate_random_string(length):
characters = string.ascii_letters + string.digits
return ''.join(random.choice(characters) for i in range(length))
# 生成驗證碼圖像
def generate_captcha_image(text, width, height, font_path, output_image_path):
image = Image.new('RGB', (width, height), color = (255, 255, 255))
draw = ImageDraw.Draw(image)
font = ImageFont.truetype(font_path, 40) # 使用指定字體和大小
draw.text((10, 10), text, fill=(0, 0, 0), font=font)
image.save(output_image_path)
# 生成隨機字符串
captcha_text = generate_random_string(6)
# 生成驗證碼圖像
generate_captcha_image(captcha_text, 150, 50, "arial.ttf", "captcha_image.png")
```
在這個示例中,我們首先使用 generate_random_string 函數生成指定長度的隨機字符串,然后使用 generate_captcha_image 函數創建一個指定大小的圖像,將隨機字符串繪制到圖像上,并保存為文件。
需要注意的是,以上示例中使用了 Pillow 庫來創建和處理圖像,同時需要提供一個字體文件(比如 Arial 字體)來顯示驗證碼文字。你可以根據自己的需求調整字體、顏色、大小等參數,以及實現更復雜的驗證碼生成邏輯,比如添加干擾線、噪點等。
要生成五顏六色的驗證碼,你可以使用 Python 的 Pillow 庫來創建帶有彩色文本和背景的圖像。以下是一個示例代碼,演示如何生成五顏六色的驗證碼圖像:
from PIL import Image, ImageDraw, ImageFont
import random
import string
# 生成指定長度的隨機字符串
def generate_random_string(length):
characters = string.ascii_letters + string.digits
return ''.join(random.choice(characters) for i in range(length))
# 生成隨機顏色
def generate_random_color():
return (random.randint(0, 255), random.randint(0, 255), random.randint(0, 255))
# 生成彩色驗證碼圖像
def generate_colorful_captcha_image(text, width, height, font_path, output_image_path):
image = Image.new('RGB', (width, height), color = generate_random_color())
draw = ImageDraw.Draw(image)
font = ImageFont.truetype(font_path, 40) # 使用指定字體和大小
for i in range(len(text)):
draw.text((10 + i * 30, 10), text[i], fill=generate_random_color(), font=font)
image.save(output_image_path)
# 生成隨機字符串
captcha_text = generate_random_string(6)
# 生成彩色驗證碼圖像
generate_colorful_captcha_image(captcha_text, 200, 100, "arial.ttf", "./img/"+captcha_text + ".png")
from PIL import Image, ImageDraw, ImageFont
import random
import string
# 生成隨機數字
def generate_random_number():
return random.randint(1, 10)
# 生成驗證碼文本和計算結果
def generate_captcha_text():
num1 = generate_random_number()
num2 = generate_random_number()
operator = random.choice(['+', '-'])
if operator == '+':
result = num1 + num2
else:
result = num1 - num2
text = f"{num1} {operator} {num2} = ?"
return text, str(result)
# 生成驗證碼圖像
def generate_math_captcha_image(text, width, height, font_path, output_image_path):
image = Image.new('RGB', (width, height), color=(255, 255, 255))
draw = ImageDraw.Draw(image)
font = ImageFont.truetype(font_path, 40) # 使用指定字體和大小
draw.text((10, 10), text, fill=(0, 0, 0), font=font)
image.save(output_image_path)
# 生成驗證碼文本和結果
captcha_text, captcha_result = generate_captcha_text()
# 生成驗證碼圖像
generate_math_captcha_image(captcha_text, 200, 50, "arial.ttf", "./img/"+captcha_text.replace('?','')+".png")
print("驗證碼文本:", captcha_text)
print("計算結果:", captcha_result)