当前位置: 首页 > 图灵资讯 > 行业资讯> Python如何生成随机图形验证码

Python如何生成随机图形验证码

发布时间:2025-10-24 16:05:42

python生成随机图形验证码

pilllow模块需要使用python生成随机图像验证码

1.安装pillow模块

pipinstallpillow

2.基本使用pillow模块

1.创建图片

fromPILimportImage
#以RGB(255、255、255、255)颜色的图片定义一个长400px、宽400px的Image类实例化
img1=Image.new(mode="RGB",size=(400,400),color=(255,255,255))
#保存生成的图片"pic.png"格式
withopen("pic.png","wb")asf:
img1.save(f,format="png")
#显示图片
img1.show()

在py文件的同级下,程序将生成一个名称"pic.png"图片长400px,宽400px,颜色为白色。

2.创建画笔

#在图片上创建画笔生成内容
draw1=ImageDraw.Draw(img1,mode="RGB")

3.在图片上生成点

#一个红点生成在(100,100)坐标上,指定的坐标不得超过图片的大小
draw1.point([100,100],pill="red")
#在(80、80)坐标上产生黑点,指定坐标不得超过图片尺寸
draw1.point([80,80],fill=(0,0,0))

相关推荐:Python视频教程

4.在图片上画线

#第一个括号中的参数是坐标,前两个是开始坐标,后两个是结束坐标
#括号中的第二个参数可以直接指定颜色,也可以用RGB来表示颜色
draw1.line(100,100,100,300),fill="red")
draw1.line(100,200,200,100),fill="blue")

在操作程序中,画笔会在(100、100)到(100、300)坐标之间画一条红色的垂直线,在(100、200)到(200、100)坐标之间画一条蓝色的斜线。

5.在图片上画一个圆圈

#括号中的第一个参数是坐标,前两个是开始坐标,后两个是结束坐标
#使用两个坐标之间的正方形区域生成一个圆,括号中的第二个参数是圆的开始角度
#第三个参数是圆的结尾角,0到360表示画的是一个完整的圆,
#指定的数字也可以生成一个圆弧,最后一个参数表示颜色,或者RGB表示所需的颜色
draw1.arc(100,100,300,300),0,360,fill="red")
draw1.arc(0,0,300,300),0,90,fill="blue")

6.在图片上写文本

#使用刷子的text方法在图片上生成文本
#第一个参数是坐标,第二个参数是所有生成文本的内容
#第三个参数是文本的颜色
draw1.text([0,0],"python","blue")

7.在图片上生成指定字体的文本

#首先对一个字体对象进行实例化,第一个参数表示字体路径,第二个参数表示字体大小
font1=ImageFont.truetype("OneChance.ttf",28)
#在图片上生成字体
#第一个括号中的参数表示坐标,第二个参数表示写入的内容
#第三个参数表示颜色,第四个参数表示使用的字体对象
draw1.text([200,200],"linux","red",font=font1)

图片验证码的实例

#导入random模块进入random模块
importrandom
#导入Image,ImageDraw,Imagefont模块
fromPILimportImage,ImageDraw,ImageFont
#以RGB(255、255、255、255)颜色定义Image类实例化图片
img1=Image.new(mode="RGB",size=(120,30),color=(255,255,255))
#实例化一支画笔
draw1=ImageDraw.Draw(img1,mode="RGB")
#定义要使用的字体
font1=ImageFont.truetype("OneChance.ttf",28)
foriinrange(5):
#每循环一次,从a到z随机生成一个字母或数字
#ASCII码为65至90字母,使用chr将生成的ASCII码转换为字符
#str将生成的数字转换为字符串
char1=random.choice([chr(random.randint(65,90)),str(random.randint(0,9)))

#每循环重新生成随机颜色
color1=(random.randint(0,255),random.randint(0,255),random.randint(0,255))

#在图片上添加生成的字母或数字
#图片长度为120px,为了生成5个数字或字母,每个添加一个,其位置将向后移动24px
draw1.text([i*24、0],char1,color1,font=font1)
#保存生成的图片"pic.png"格式
withopen("pic.png","wb")asf:
img1.save(f,format="png")

在程序的同级目录中,程序生成一个包含随机字符的小图片。

相关文章

Python如何生成随机图形验证码

Python如何生成随机图形验证码

2025-10-24
Python之初识闭包函数

Python之初识闭包函数

2025-10-24
Python如何将图片转换成字符

Python如何将图片转换成字符

2025-10-24
python如何通过日志分析加入黑名单

python如何通过日志分析加入黑名单

2025-10-23
Python之classmethod和staticmethod的区别

Python之classmethod和staticmethod的区别

2025-10-23
Python3中的数字(Number)

Python3中的数字(Number)

2025-10-23