首页 > 编程语言 >python生成图片验证码的demo

python生成图片验证码的demo

时间:2023-09-23 23:01:45浏览次数:33  
标签:randint python demo random 验证码 height width text font

下面是一个使用Python生成图片验证码的简单示例:

from PIL import Image, ImageDraw, ImageFont
import random

def generate_captcha(text, width, height, font_path, font_size):
    # 创建一个空白图片
    image = Image.new('RGB', (width, height), (255, 255, 255))
    draw = ImageDraw.Draw(image)

    # 加载字体
    font = ImageFont.truetype(font_path, font_size)

    # 绘制验证码文本
    text_width, text_height = draw.textsize(text, font=font)
    x = (width - text_width) // 2
    y = (height - text_height) // 2
    draw.text((x, y), text, font=font, fill=(0, 0, 0))

    # 添加噪点
    for _ in range(100):
        x = random.randint(0, width - 1)
        y = random.randint(0, height - 1)
        draw.point((x, y), fill=(0, 0, 0))

    # 添加干扰线
    for _ in range(5):
        x1 = random.randint(0, width - 1)
        y1 = random.randint(0, height - 1)
        x2 = random.randint(0, width - 1)
        y2 = random.randint(0, height - 1)
        draw.line([(x1, y1), (x2, y2)], fill=(0, 0, 0))

    return image

# 生成验证码
text = ''.join(random.choices('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789', k=4))
image = generate_captcha(text, 200, 80, 'arial.ttf', 36)
image.show()

请确保已经安装Pillow库(pip install pillow)。这个示例会生成一个包含随机四个字母和数字的验证码图片,并显示在屏幕上。你可以根据需要调整图片的宽度、高度、字体路径和字体大小等参数。

标签:randint,python,demo,random,验证码,height,width,text,font
From: https://blog.51cto.com/u_15668841/7581479

相关文章

  • (base) [root@pc1 test01]# conda create -n py37 python=3.7
     001、问题:conda创建python环境遇到如下问题:Collectingpackagemetadata(current_repodata.json):|DEBUG:urllib3.connectionpool:StartingnewHTTPSconnection(1):repo.anaconda.com:443 002、解决方法: ......
  • Python break 语句
    Pythonbreak语句,就像在C语言中,打破了最小封闭for或while循环。break语句用来终止循环语句,即循环条件没有False条件或者序列还没被完全递归完,也会停止执行循环语句。break语句用在while和for循环中。如果您使用嵌套循环,break语句将停止执行最深层的循环,并开始执行下一行代码。Pytho......
  • Python continue 语句
    Pythoncontinue语句跳出本次循环,而break跳出整个循环。continue语句用来告诉Python跳过当前循环的剩余语句,然后继续进行下一轮循环。continue语句用在while和for循环中。Python语言continue语句语法格式如下:continue流程图:实例:实例(Python2.0+)#!/usr/bin/python#-*-codi......
  • Python pass 语句
    Pythonpass是空语句,是为了保持程序结构的完整性。pass 不做任何事情,一般用做占位语句。Python语言pass语句语法格式如下:pass测试实例:实例#!/usr/bin/python#-*-coding:UTF-8-*-#输出Python的每个字母forletterin'Python':ifletter=='h':passpri......
  • Python 正则表达式
    正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配。Python自1.5版本起增加了re模块,它提供Perl风格的正则表达式模式。re模块使Python语言拥有全部的正则表达式功能。compile函数根据一个模式字符串和可选的标志参数生成一个正则表达式对象......
  • Python CGI编程
    什么是CGICGI目前由NCSA维护,NCSA定义CGI如下:CGI(CommonGatewayInterface),通用网关接口,它是一段程序,运行在服务器上如:HTTP服务器,提供同客户端HTML页面的接口。网页浏览为了更好的了解CGI是如何工作的,我们可以从在网页上点击一个链接或URL的流程:1、使用你的浏览器访......
  • git commit 报错:找不到 python 3.8
    到这个问题的原因可能有很多,这里只是记录下针对我遇到这这跟题的原因及解决方法问题描述执行gitcommit命令,报错/usr/bin/env:‘python3.8’:Nosuchfileordirectory问题分析gitcommit命令本身不需要python,找不到python多半配置了hook去进行提交去的检查,例......
  • 用户登录~生成图片验证码(identify(生成图片验证码)插件)
    1.效果图:2.以用户登录实现生成图片验证功能:使用identify(生成图片验证码)插件identify:这是一个vue的插件,使用canvas来生成图形验证码2.1下载identify插件,npm安装 npmiidentify2.2具体参数如下:2.2在components目录新建一个SIdentify.vue,把以下代码复制进去!<tem......
  • 推荐十道Python列表基础测试题
    1.引言虽然在日常工作中大家经常使用Python列表,但是你觉得你真正掌握了其精髓嘛?本文列出十道基础的Python列表测试题,快来接受挑战吧!闲话少说,直接开始吧!2.习题一下列代码的输出是什么?h=[]h.extend('code')print(h)选项如下:A)['code']B)['c','o','d','e']C)[]D)E......
  • 运行 Knative Serving demo 应用
    创建ns#kubectlcreatensknative-demonamespace/knative-democreated创建应用hello-world.yamlapiVersion:serving.knative.dev/v1kind:Servicemetadata:name:helloworld-gonamespace:knative-demospec:template:spec:containers:......