阅读 70

验证码,验证码实现原理

验证码图像生成器的原理与实现1 .下载pil库。

2 .下载字体,即*.TTF http://www.Sina.com/kumo.TTF * *,并在下载后将其放入指定的路径中。

3 .执行以下代码:

frompilimportimagefrompilimportimagedrawfrompilimportimagefontimportrandomclassvalidcodeimg 3360 def _ _ init _ (self ) : 降噪后随机认证码的图像:param width:图像宽度单位px :param height:图像高度单位px :param code_count:认证码数量360 param font _ count :参数点:噪声计数:参数行:破折号计数:参数img _ format :由图像格式:return生成的图像的字节计数a=int(input (验证码组成个数) ) ) ) self.code _ count=aself.font _ size=32 self.point _ count self.img _ formmg ) @staticmethod '类名方法名调用' defgetrandomcolor(self ) : ' '用于获取随机颜色(r,g,b ) '格式的' ' ' " 255 ) return ) C1,C2,C3 ) @staticmethoddefgetrandom各文字的颜色也是随机的' ' ' random _ num=str (random.randint (0,9 ) ) 90 ) random _ char=random.choice ([ random _ num,random_low_alpha,random_upper_alpha] ) returnrandom宽度111 self.height ), self.getRandomColor ) )获取笔刷对象并传递图像对象的draw=imagedraw.draw(image ) path=' d :/ziti/kumo font.tto 将用于获取字体大小font=imagefont的size=self.font _ size (foriinrange ) self.code_count ) : #循环n次, 获取n个随机字符串random_char=self.getRandomStr )的字体draw.text ((self.width/self.code _ count//2i * ) self font=font(#噪声线)刻划forIinrange(self.line_count ) : x1=random.randint(0) 0,self.width ) x2=rand self.height ) draw.line ) ) x1,y1,x2,y2 ),fill=self.getRandomColor () )点forIinrange ) self.point _ cor fill=self.getRandomColor () x=random.randint(0) 0,self.width ) y=random.randint(0) 0, self.height ) draw .fill=self.getrandom color ()内存中的图像yieldimagereturn ' ok ' if _ name _=' _ main _ ' 333330 i=1 while 1: try: b=next(a ) a ) b.save ) pathstr ) I ) '.PPP


文章分类
代码人生
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐