现在验证码的种类越来越多,短信验证码,语音验证码,图片验证码,滑条验证码……我们可以在网页或者手机上使用PC端登录或注册APP时,总会遇到图片验证码。比如上面下面的图片验证码,都是用Python做的。方法很多,但大多依赖于Python强大的第三方库。下面给大家介绍三种图片验证码的制作方法,难度从高到低。Pillow库Pillow是一个非常强大的图像处理模块。Image是Pillow中最重要的类,它实现了Pillow中的大部分功能。该类主要用于表示图像对象。生成图片验证码需要以下四个类:1.Image:包含图片对象主体上的一些应用2.ImageDraw:画笔,用于给图片添加验证码3.ImageFont:设置字体验证码格式4.ImageFilter:模糊图片验证码,粘贴代码先生成验证码:fromPILimportImage,ImageDraw,ImageFont,ImageFilterimportrandom,string#得到4个字符的随机组合defgetRandomChar():chr_all=string。ascii_letters+string.digitschr_4=''.join(random.sample(chr_all,4))returnchr_4#获取随机颜色defgetRandomColor(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))#验证码字体=ImageFont.truetype('C:/Windows/fonts/stxinwei.ttf',40)#创建画笔draw=ImageDraw.Draw(image)#获取验证码char_4=getRandomChar()#在画布上填写验证码foriinrange(4):draw.text((40*i+10,0),char_4[i],font=font,fill=getRandomColor(100,200))#绘制干扰点forxinrange(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.模糊)图像.保存('。/%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使用验证码库生成图片验证码code: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库的实现是最简单的,简单到只需要3行代码就可以实现上面的操作,首先我们还需要安装这个库。注意使用pip安装时要使用如下名称:pipinstallgraphic-verification-code-ihttps://pypi.tuna.tsinghua.edu.cn/simple然后粘贴生成的图片验证码Code:importgvcodes,v=gvcode。generate()s.save('./%s.jpg'%v)你没看错~这三行代码可以生成图片验证码,还有一行是Guide包,也就是说有效代码只有两行!print(type(s))print(v)print(type(v))其中s是最终生成的图片验证码,v是图片验证码上的4个字符,是字符串类型,打印出来:该方法生成的图片验证码格式如下:后三种方法生成图片验证码各有优缺点。第一种方法虽然复杂,但是可以DIY。第二种方式生成的图片验证码应该和我们平时接触的最相似。虽然第三种方法最容易操作,但是生成的图片验证码有点看不清是一个有趣的小知识。朋友们可以自己试试!
