Python实现随机生成图片验证码详解
作者:小木_. 发布时间:2023-02-26 12:20:20
标签:Python,图片,验证码
使用python生成一个图片验证码,随机的,可以由于验证人机和别的啊,很方便很简单
导入模块
import random
from PIL import Image,ImageFont,ImageDraw
生成随机验证码
def rndtxt():
txt_list = []
# 大写字母
txt_list.extend([i for i in range(65,90)])
# 小写字母
txt_list.extend([i for i in range(97,123)])
# 数字
txt_list.extend([i for i in range(48,57)])
return chr(txt_list[random.randint(0,len(txt_list)-1)])
作为待会生成的图片背景色和字体色
def rndbgcolor():
# 背景颜色
return (random.randint(64,255),random.randint(64,255),random.randint(64,255))
def rndtxtcolor2():
# 字体颜色
return (random.randint(32,127),random.randint(32,127),random.randint(32,127))
进行生成打印验证码并以图片的形式打开,不保存图片文件,仅用于一时的验证码验证
def code():
weight = 240
hight = 60
image = Image.new('RGB',(weight,hight),(255,255,255))
font = ImageFont.truetype('msyh.ttc',36)
draw = ImageDraw.Draw(image)
# 填充背景颜色
for x in range(weight):
for y in range(hight):
draw.point((x,y),fill=rndbgcolor())
# 生成随机验证码
for T in range(4):
rndtxt_2 = rndtxt()
print(rndtxt_2) # 打印验证码的值
draw.text((60 * T + 10,10),rndtxt_2,font=font,fill=rndtxtcolor2())
image.show()
完整代码:
#!/usr/bin/env python3
import random
from PIL import Image,ImageFont,ImageDraw
def rndtxt():
txt_list = []
# 大写字母
txt_list.extend([i for i in range(65,90)])
# 小写字母
txt_list.extend([i for i in range(97,123)])
# 数字
txt_list.extend([i for i in range(48,57)])
return chr(txt_list[random.randint(0,len(txt_list)-1)])
def rndbgcolor():
# 背景颜色
return (random.randint(64,255),random.randint(64,255),random.randint(64,255))
def rndtxtcolor2():
# 字体颜色
return (random.randint(32,127),random.randint(32,127),random.randint(32,127))
def code():
weight = 240
hight = 60
image = Image.new('RGB',(weight,hight),(255,255,255))
font = ImageFont.truetype('msyh.ttc',36)
draw = ImageDraw.Draw(image)
# 填充背景颜色
for x in range(weight):
for y in range(hight):
draw.point((x,y),fill=rndbgcolor())
# 生成随机验证码
for T in range(4):
rndtxt_2 = rndtxt()
print(rndtxt_2) # 打印验证码的值
draw.text((60 * T + 10,10),rndtxt_2,font=font,fill=rndtxtcolor2())
image.show()
code()
来源:https://blog.csdn.net/weixin_46625757/article/details/122531906


猜你喜欢
- 前言相比java,python的异常和java中不同,python主要是防止程序异常被中止。一旦被catch后它还行往下执行。一、异常1.1
- 一个小项目自动登录淘宝联盟抓取数据,由于之前在Github上看过类似用Python写的代码因此选择用Python来写,第一次用Python正
- 这段时间在做项目的过程中,遇到一个模块,数据之间的联系很复杂,在建表的时候就很纠结,到底该怎么去处理这些复杂的数据呢,是单表查询,然后在业务
- 本文实例讲述了Python使用回溯法解决迷宫问题。分享给大家供大家参考,具体如下:问题给定一个迷宫,入口已知。问是否有路径从入口到出口,若有
- 首先:我们介绍一下socket什么是socket:1. socket 在操作系统中它是处于应用层与传输层的抽象层,它是一组操作起来非常简单的
- 前言最近微信小游戏跳一跳大热,自己也是中毒颇久,无奈手残最高分只拿到200分。无意间看到教你用Python来玩微信跳一跳一文,在电脑上利用a
- 在用csv.writer写入文件的时候发现中间有多余的空行。最早打开方式只是‘w',会出现多余的空行,网上建议使用binary形式‘
- 直线检测原理核心要点:图像坐标空间、参数空间、极坐标参数空间 -> (极坐标)参数空间表决给定一个点,我们一般会写成y=ax+b的形式
- Zabbix的简单安装配置说明1、在已有的LAMP或者LNMP的基础上安装zabbix,安装一些依赖包:yum -y install mys
- 我们可向函数传递动态参数,*args,**kwargs,首先我们来看*args,示例如下:1.show(*args)def show(*ar
- 组件 (Component) 是 Vue.js 最强大的功能之一。组件可以扩展 HTML 元素,封装可重用的代码。在较高层面上,组件是自定义
- 其中如果有问题,有更好的意见或者建议都可在最后留言,都将对您感激不尽。 具体的代码如下: <!DOCTYPE HTML> <
- 目录一、慢在哪?二、是否查询了不需要的数据1. 查询不需要的记录2. 多表关联时返回全部列3. 总是查询出全部列4. 重复查询相同的数据三、
- 本文介绍FCKeditor在Java环境下的使用方法。一、简介 功能:所见即所得,支持图片和Flash,工具栏可自由配置,使用简单兼容性:I
- 一、提出问题利用SQL,从右到左查找某一字符串中匹配的查询串的第一个索引位置。比如有一字段ProductName值格式如下:短袖印花T恤 M
- 当用cmd命令行运行python文件时,我们知道可以通过>python pyfile.py来运行python文件,此时的输出会直接打印
- 今天因为做一个效果的时候需要CSS的定位来实现,于是我就根据自己原来对CSS的了解,用absolute和relative摆弄了好一阵子,总是
- 在 Go 语言中,map 是一种非常常见的数据类型,它可以用于快速地检索数据。Go 语言中的 map 与其他编程语言中的类似的数据类型相比,
- foreignkey是一种关联字段,将两张表进行关联的方式,我们在dodels.py里写入要生成的两张表:class Usergroup(m
- 这篇文章主要介绍了微信小程序转发事件实现解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考