• 使用 Python 這個庫,生成各種類型的驗證碼

    上一篇 / 下一篇  2024-03-08 14:26:47

      在 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)

    TAG: 軟件開發 Python

     

    評分:0

    我來說兩句

    Open Toolbar
    久久97久久97精品免视_欧洲国产伦久久久久久_91麻豆精品国产自产在线观_伊人久久大香线蕉综合av