如何在python3中使用枕头模块实现一个验证码功能

  介绍

这期内容当中小编将会给大家带来有关如何在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中使用枕头模块实现一个验证码功能

上述就是小编为大家分享的如何在python3中使用枕头模块实现一个验证码功能了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注行业资讯频道。

如何在python3中使用枕头模块实现一个验证码功能