网络编程
位置:首页>> 网络编程>> Python编程>> Python实现随机生成图片验证码详解

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

Python实现随机生成图片验证码详解

完整代码:

#!/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

0
投稿

猜你喜欢

手机版 网络编程 asp之家 www.aspxhome.com