标签:验证码 abc top pre 操作 tar random 网站安全 sam
上节课我们学习了制作了表情包,本节课我们将继续探究数据操作。
验证码(CAPTCHA)是“Completely Automated Public Turing test to tell Computers and Humans Apart”(全自动区分计算机和人类的图灵测试)的缩写,是一种区分用户是计算机还是人的公共全自动程序。
# 验证码是许多网站用于注册登录的。 # 它能有效防止恶意登录注册,验证码每次都不同, # 可以避免病毒或者软件自动申请用户及自动登陆,保护网站安全。
1.特点
# 图片上有很多的小点; # 图片上有很多线条; # 图片上有字母数字; # 图片上有几种颜色。
2.制作二维码步骤
需要使用的库有PIL 和random
# 首先创建出一张图片 # 在图片上随机画上点 # 在图片上随机画线条 # 在图片上写一些文字
import PIL from PIL import Image,ImageDraw,ImageFont,ImageFilter import random class Picture(object): def __init__(self,text_str,size,background): ‘‘‘ text_str:验证码显示的字符组成的字符串 size:图片大小 background:背景颜色 ‘‘‘ self.text_str=list(text_str) self.size=size self.background=background def create_pic(self): ‘‘‘ 创建一张图片 ‘‘‘ self.width,self.height=self.size self.img=Image.new("RGB",self.size,self.background) # 实例化画笔 self.draw=ImageDraw.Draw(self.img) def create_point(self,num,color): ‘‘‘ num:画点的数量 color:点的颜色 ‘‘‘ for i in range(num): self.draw.point( (random.randint(0,self.width),random.randint(0,self.height)), fill=color) def create_line(self,num,color): ‘‘‘ num:线条的数量 color:线条的颜色 ‘‘‘ for i in range(num): self.draw.line( [ (random.randint(0,self.width),random.randint(0,self.height)), (random.randint(0,self.width),random.randint(0,self.height)) ],fill=color ) # 在图片上写文字 def create_text(self,start_xy,font_type,font_size,font_color,font_num): ‘‘‘ start_xy:第一个字左上角坐标(x,y) font_type:字体 font_size:文字大小 font_color:文字颜色 font_num:文字数量 ‘‘‘ font=ImageFont.truetype(font_type,font_size) self.draw.text(start_xy,"".join(random.sample(self.text_str,font_num)), font=font,fill=font_color) # 设置图片类的三个基本参数 strings="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890" size=(150,50) background="white" # 实例化一个图片对象 pic=Picture(strings,size,background) # 传递参数,调用定义的四个方法 pic.create_pic() pic.create_point(500,(201,47,37)) pic.create_line(30,(111,90,210)) pic.create_text((7,7),"simsun.ttc",24,(0,0,205),5) pic.img.show() # 保存图片 pic.img.save("C:\\Users\\admin\\Desktop\\Tx\\Picture\\code.png")
标签:验证码 abc top pre 操作 tar random 网站安全 sam
原文地址:https://www.cnblogs.com/xiaoxiao-ya/p/12250515.html