现在验证码的种类越来越多,比如短信验证码、语音验证码、图片验证码、滑块验证码……我们在网页端或者手机端PC端登录或注册APP时,总会遇到图片验证码,例如:PillowFunction的,这个类主要用来表示图像对象。生成图片验证码需要以下四个类:1.Image:包含图片对象主体上的一些应用2.ImageDraw:画笔,用于给图片添加验证码3.ImageFont:设置字体验证码格式4.ImageFilter:模糊图片验证码先粘贴代码生成验证码:fromPILimportImage,ImageDraw,ImageFont,ImageFilterimportrandom,string#获取4个字符的随机组合defgetRandomChar():chr_all=string.ascii_letters+字符串。数字chr_4=''.join(random.sample(chr_all,4))returnchr_4#GetrandomcolordefgetRandomColor(low,high):return(random.randint(low,high),random.randint(low,high),random.randint(low,high))#制作验证码图片defgetPicture():width,height=180,60#制作空白画布image=Image.new('RGB',(width,height),getRandomColor(20,100))#验证码font=ImageFont.truetype('C:/Windows/fonts/stxinwei.ttf',40)#创建画笔绘制=ImageDraw.Draw(image)#获取验证码char_4=getRandomChar()#To在画布上填写验证码foriinrange(4):draw.text((40*i+10,0),char_4[i],font=font,fill=getRandomColor(100,200))#绘制干涉点对于范围内的x(random.randint(200,600)):x=random.randint(1,width-1)y=random.randint(1,height-1)draw.point((x,y),fill=getRandomColor(50,150))#blurringimage=image.filter(ImageFilter.BLUR)image.save('./%s.jpg'%char_4)我们都知道图片验证码一般都是以一张图片为基础,有不同的背景颜色,上面印有4个不同的字符,可能是数字,字母,也可能是这两者的组合,而这些字符看起来不会很清楚。上述代码中的三个函数分别实现了生成图片验证码的某个需求。首先使用getRandomChar函数生成4个随机字符的组合,其中chr_all包含大写字母、小写字母和数字:abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789random.sample方法是随机选择这些字符的几个组合(这里我们选择4个)生成一个新列表。getRandomColor函数用于设置RGB的三个阈值。RGB是最常用的颜色系统。它是通过红(R)、绿(G)、蓝(B)三个颜色通道的变化及其相互的叠加得到多种颜色,每个通道的阈值在[0,255]之间。getPicture函数用于制作图片验证码。具体代码功能注释。建议字体颜色和背景颜色阈值不要重叠。容易出现能见度低的角色。这样生成的图片验证码如下两种形式:验证码库如果你和我一样好奇这个库的中文意思,你可以解释一下,你会发现它的中文意思是验证码,也就是说这个库可以用来制作验证码:可以先用清华镜像安装验证码库:pipinstallcaptcha-ihttps://pypi.tuna.tsinghua.edu.cn/simple使用验证码库生成图片验证码代码:fromcaptcha.imageimportImageCaptchaimportrandom,stringchr_all=string.ascii_letters+string.digitschr_4=''.join(random.sample(chr_all,4))image=ImageCaptcha().generate_image(chr_4)image.save('./%s.jpg'%chr_4)我们可以看到我们需要的操作是将随机生成的4个字符的组合传入ImageCaptcha类下的generate_image方法,然后他会自动生成一个图片验证码,形式如下:gvcode库的最后一个方法最简单,sosimple以至于只需要3行代码就可以实现上面的操作。首先,我们还需要安装这个库。注意使用pip安装时要使用如下名称:pipinstallgraphic-verification-code-ihttps://pypi.tuna.tsinghua.edu.cn/simple然后粘贴代码生成图片验证码:importgvcodes,v=gvcode.generate()s.save('./%s.jpg'%v)你没看错~这三行代码可以生成一个A图验证码,其中一行用来引导package,也就是说只有两行有效代码!print(type(s))print(v)print(type(v))其中s为最终生成的图片验证码,v为图片验证码上的4个字符,即字符串类型,打印出来:last上面几种方法生成的图片验证码的形式如下:说最后三种方法生成图片验证每个代码都有自己的优点和缺点。第一种方法虽然复杂,但是可以DIY。第二种方式生成的图片验证码应该和我们平时接触的最相似。虽然第三种方法最容易操作,但生成的图片验证码是一个很有趣的小知识,如果对代码有点看不懂,可以自己尝试一下!更多文章资料|点击下方文字直达↓↓↓阿里云K8s实战手册【阿里云CDN挖坑指南】CDNECS运维指南DevOps实战手册Hadoop大数据实战手册Knative云原生应用开发指南OSS运维实用手册
