Python 生成图片验证码

  图片验证码(CAPTCHA)是一种区分用户是计算机还是人的公共全自动程序。这种验证码通常以图片的形式出现,其中包含一些扭曲的字符或对象,用户需要识别这些字符或对象并输入正确的答案以通过验证。

  通常情况下,图片验证码会在用户注册或登录时出现,用户需要输入图片中的文字或字符才能继续进行操作。对于一些敏感性较高的应用场景,图片验证码也被广泛采用,以确保用户身份的安全。

需要注意的是,虽然图片验证码在一定程度上可以起到防止恶意攻击的作用,但它也有一些缺点。例如,对于一些老年用户或视力不佳的用户来说,识别验证码可能会有一定的困难。此外,一些黑客可能会通过图像识别技术来破解验证码,因此一些网站可能会使用更加复杂的验证码系统来提高安全性。

代码实现

import os
from PIL import Image, ImageDraw, ImageFont
import numpy as np
import random

class CaptchaGenerator:
    def __init__(self):
        self.NewArray = np.zeros((100, 300, 3), dtype=np.uint8)
        Sh = self.NewArray.shape
        for i in range(Sh[0]):
            for j in range(Sh[1]):
                for k in range(Sh[2]):
                    self.NewArray[i][j][k] = random.randint(0, 255)
        self.im = Image.fromarray(self.NewArray)
        self.D = ImageDraw.Draw(self.im)
        self.L = [chr(i + 48) for i in range(10)]

    def generate_captcha(self):
        captcha = ""
        for i in range(4):
            captcha += random.choice(self.L)
            self.D.text((75 * i + 10 + random.randint(-10, 10), random.randint(0, 40)), captcha[-1],
                       font=ImageFont.truetype('arial.ttf', 55), fill=(random.randint(0, 255), random.randint(0, 255), random.randint(0, 255)))
        return captcha

    def show_and_save(self, captcha):
        print("验证码数字:", captcha)
        #self.im.show()
        #self.im.save("code.jpg")

if __name__ == "__main__":
    captcha_generator = CaptchaGenerator()
    captcha = captcha_generator.generate_captcha()
    captcha_generator.show_and_save(captcha)

 可以收藏一下,同学们如果做什么学习项目,可以直接拿过去使用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/366540.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

k8s中调整Pod数量限制的方法

一、介绍 Kubernetes节点每个默认允许最多创建110个pod,有时可能由于主机配置扩容的问题,从而需要修改节点pod运行数量的限制。 即:需要调整Node节点的最大可运行Pod数量。 一般来说,只需要在kubelet启动命令中增加–max-pods参数…

伯克利DeepMind联合研究,RaLMSpec让检索增强LLM速度提升2-7倍!

引言:知识密集型NLP任务中的挑战与RaLM的潜力 在知识密集型自然语言处理(NLP)任务中,传统的大语言模型面临着将海量知识编码进全参数化模型的巨大挑战。这不仅在训练和部署阶段需要大量的努力,而且在模型需要适应新数…

五款好用的在线去水印工具

我们都知道今年是AI大爆发的一年。在日常生活中,你是否经常在拍照时遇到照片中出现一些不必要的路人或其他元素的情况?通常,我们会使用PS软件或其他APP来处理这些问题。但是,对于一些不熟悉PS的朋友来说,这可能会是一种…

缓存击穿,商详页进不去了!!!

故事 对于小猫来讲,最近的一段日子是不好过的,纵使听着再有节拍的音乐,也换不起他对生活的热情。由于上一次“幂等事件”躺枪,他已经有几天没有休息好了。他感觉人生到了低谷。 当接手这个商城项目之后,他感觉他一直没…

嵌入式中C 语言中的三块技术难点

C 语言在嵌入式学习中是必备的知识,甚至大部分操作系统都要围绕 C 语言进行,而其中有三块技术难点,几乎是公认级别的“难啃的硬骨头”。 今天就来带你将这三块硬骨头细细拆解开来,一定让你看明白了。 0x01 指针 指针是公认最难理…

纷享销客渠道伙伴答谢会苏皖站:共谋高质量增长,擘画合作新篇章

2024年1月31日,纷享销客在南京成功举办了“凝心聚力 勇立潮头”——2024纷享销客渠道伙伴答谢会暨业务启动会|苏皖站。活动邀请了苏皖地区10余家核心渠道伙伴的代表,其中30余位投资人、创始人、总经理和合伙人亲临现场,共同探讨渠道伙伴的共赢…

数据处理Job思路总结

对工作中遇到的数据处理Job做了一些梳理,这里试图总结一种通用的Job开发思路。 1. Job的构成 Job 的核心元素包含: 任务、数据、接口、结果。 1.1 任务 数据处理任务。有些业务场景下,Job与任务是绑定的,执行一次Job就对应一个任…

光耦合器的结构与原理解析

光耦合器是一种重要的电光转换器件,广泛应用于电子设备、通信系统以及工业控制等领域。本文将深入分析光耦合器的结构与原理,旨在为读者提供清晰而全面的了解。 光耦合器作为一种关键的电子元件,扮演着信号隔离和传输的重要角色。它的设计结构…

【GitHub项目推荐--开箱即用的直播聊天系统,高颜值,支持二次开发】【转载】

Owncast Owncast 是一个免费开源的实时视频和网络聊天服务器,可与现有流行的广播软件一起使用。 github源代码: https://github.com/owncast/owncast 国内镜像(中文) http://www.gitpp.com/samgoat/owncast-cn 项目介绍 Owncast 是一个开源的、可…

Pycharm安装插件

经常用Pycharm写代码的话,时不时的就会接触到一些好用的插件,如何安装插件呢?经常使用的是两种方式,分别是在线安装和离线安装。 在线安装 在线安装比较简单,打开Pycharm,在左上角【文件】->【设置】-…

Portainer访问远程Docker (TLS加密)

前言: docker的2375端口,出于安全性考虑即(Docker Remote API未授权访问漏洞),是不开放的,如果想要管理远程docker,可以使用TLS机制来进行访问,这里以Portainer访问连接为例 文章参考:https://b…

实习|基于SSM的实习管理系统设计与实现(源码+数据库+文档)

实习管理系统目录 目录 基于SSM的实习管理系统设计与实现 一、前言 二、系统功能设计 三、系统实现 1、管理员功能介绍 (1)管理员登录 (2)实训方向管理 (3)公告信息管理 (4&#xff0…

笔记本键盘卸载或自动跳出字符故障或按键无效修复办法

首先,在Windows 10操作系统中,您可以在笔记本电脑桌面上找到"计算机"图标,并使用鼠标右键点击它。然后选择"属性"选项。 打开系统属性后,您会看到右上角有一个"设备管理器"选项。请点击它来打开设…

深掘开源安全需求,破解开源治理难题

当下,中国金融科技行业在数字支付、数字信贷、金融风控等领域取得了很多创新成果,大幅提升了金融数字化和智能化水平,已经在金融科技的全球竞争中走在前列。 在此进程中,开源技术发挥了不可或缺的重要作用,根据我国金…

第三百零二回

文章目录 1. 概念介绍2. 实现方法2.1 使用Steam实现2.2 使用Timer实现 3. 示例代码4. 内容总结 我们在上一章回中介绍了"如何实现每隔一段时间执行某项目任务"相关的内容,本章回中将介绍如何实现倒计时功能.闲话休提,让我们一起Talk Flutter吧…

ELK集群搭建(基础教程)

ELK集群搭建(基础教程) 目录: 机器准备 集群内各台机器安装Elasticsearch 安装部署Kafka(注:每个节点都配置,注意ip不同) 安装logstash工具 安装filebeat ELK收集Nginx的json日志 ELK收集Nginx正常日志和错误日…

用纯OpenAI的API,实现手机流量包智能客服

import json from openai import OpenAI from dotenv import load_dotenv, find_dotenv _ load_dotenv(find_dotenv())def print_json(data):"""打印参数。如果参数是有结构的(如字典或列表),则以格式化的 JSON 形式打印&…

容器化对数据库的性能有影响吗?

引言 容器化是一种将应用程序及其依赖项打包到一个独立、可移植的运行环境中的技术。容器化技术通过使用容器运行时引擎(比如Docker/Containerd)来创建、部署和管理容器。Kubernetes(通常简称为 k8s)是一个开源的容器编排和管理平…

谷粒商城【成神路】-【3】——三级分类

目录 🍿1.查询三级分类 🧂2.前端页面搭建 🍟3.添加网关 🍳4.解决跨域 🧇5.显示分类 🥞6.显示复选框 1.查询三级分类 1.controller 直接调用service层的接口 RequestMapping("/list/tree&qu…

多线程(进阶三:JUC)

一、Callable接口 二、reentrantLock 三、原子类 四、线程池 五、信号量 Semaphore 六、CountDownLatch JUC即java.utill.concurrent,里面放了一些多线程编程时有用的类,下面是里面的一些类。 一、Callable接口 1、创建线程的操作 多线程编程时&a…