介绍
这期内容当中小编将会给大家带来有关如何在python3中使用枕头模块实现一个验证码功能,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。
#, - *安康;编码:utf-8 - * - #,__author__: Pad0y 得到PIL import 形象,,ImageDraw, ImageFont 时间的选择,得到random import randint, randrange import 字符串 #,候选字符集,大小写字母+数字 时间=chrs string.ascii_letters + string.digits def selected_chrs(长度): “才能”;“ 返才能回个长度随机字符串 ,,:param 长度: ,,:返回: “才能”;“ 时间=result 才能;& # 39;& # 39;. join(选择(对应),for _ 拷贝范围(长度) return 才能结果 def get_color (): “才能”;“ ,,设置随机颜色 ,,:返回: “才能”;“ 时间=r 才能;randint (0, 255) 时间=g 才能;randint (0, 255) 时间=b 才能;randint (0, 255) return 才能;(r, g, b) def 主要(大?(200,,100),chrNumber=6,背景=(255,,255,,255)): “才能”;“ 定才能义图片大小,验证码长度,背景颜色 ,,:param 大小: :才能param chrNumber: :param 才能告诉我们: ,,:返回: “才能”;“ #,才能创建空白图像和绘图对象 image_tmp 才能=,Image.new (& # 39; rgb # 39;,,大小,背景) 时间=draw 才能;ImageDraw.Draw (image_tmp) #,才能生成并计算随机字符的宽度和高度 时间=text 才能;selected_chrs (chrNumber) font 才能=,ImageFont.truetype (& # 39; c: \ windows \ \ \ \ \ Roboto-Regular.ttf& # 39;字体,,48),#,选定一款系统字体 宽度,才能,height =, draw.textsize(文本,字体) if 才能;width  +, 2 * chrNumber 祝辞,大小[0],趁机height 祝辞,大小[1]: ,,,print (& # 39; Size 错误! & # 39;) ,才能返回 #,才能绘制字符串 startX 才能=0 时间=width_eachchr 才能;width //, chrNumber #,计算每个字符宽度 for 才能小姐:拷贝范围(chrNumber): ,,,startX +=, width_eachchr + 1 ,,,position =, (startX,,(大小[1]高度)//2 + randint(-10,, 10)), #,字符坐标,,Y坐标上下浮动 ,,,draw.text (xy=位置,文本=文本(我),字体=字体,填补=get_color()), #,绘制函数 #,才能对像素位置进行微调,实现验证码扭曲效果 img_final 才能=,Image.new (& # 39; rgb # 39;,,大小,背景) 时间=pixels_final 才能;img_final.load () 时间=pixels_tmp 才能;image_tmp.load () for 才能;y 拷贝范围(大小[1]): ,,,offset =, randint (1, 0), #, randint()相当于闭区间(x, y) ,,,for x 拷贝范围(大小[0]): ,,,,,newx =, x +, offset #,像素微调 ,,,,,if newx 祝辞=,大小[0]: ,,,,,,,newx =,大小[0],安康;1 ,,,,,elif newx & lt;, 0: ,,,,,,,newx =0 ,,,,,pixels_final [newx,, y],=, pixels_tmp (x, y) #,才能绘制随机颜色随机位置的干扰像素 时间=draw 才能;ImageDraw.Draw (img_final) for 才能小姐:拷贝范围(int[1]([0]大小*大小* 0.07)):,#,7%密度的干扰像素 ,,,draw.point ((randrange(大小[0]),randrange(大小[1])),,填补=get_color ()), #, randrange取值范围是左开右闭 #,才能绘制随机干扰线,这里设置为8条 for 才能小姐:拷贝范围(8): ,,,start =, (0,, randrange(大小[1])) ,,,最终获得=,(大小[0],randrange(大小[1])) ,,,draw.line(开始,,,,填补=get_color(),宽度=1) #,才能绘制随机弧线 for 才能小姐:拷贝范围(8): ,,,start =,(-50,, -50), #,起始位置在外边看起来才会像弧线 ,,,最终获得=,(大小[0]+ 10,randint(0,大小[1]+ 10)) ,,,draw.arc(0, +结束,开始还以为;360年,填补=get_color ()) #,才能保存图片 img_final.save才能(& # 39;Veri_code.jpg& # 39;) img_final.show才能() if __name__ ==, & # 39; __main__ # 39;: 主要的才能((200,,100),6日,(255,,255,,255))
效果图如下
上述就是小编为大家分享的如何在python3中使用枕头模块实现一个验证码功能了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注行业资讯频道。