图片验证码

python -m pip install --upgrade pip 升级pip
import
random ##随机模块,可以产生随机数 from PIL import Image,ImageDraw,ImageFont,ImageFilter ''' PIL 需要通过pip install PIL 来安装 Image 负责图片处理 ImageDraw 负责处理画笔 ImageFont 负责处理字体 ImageFilter 负责处理滤镜 ''' #项目的思路: #1.定义一张图片 img = Image.new("RGB",(150,50),(255,255,255)) """ 第一个参数:代表我们采用的颜色 第二个参数:代表图片大小 第三个参数:具体图片的颜色 """ #2.创建画笔 draw = ImageDraw.Draw(img) #3.绘制线条和点 #绘制线 for i in range(random.randint(1,10)): draw.line( #在绘制线条时有个特色:每条线都有两个点,每个点靠X,y两个值来确定位置 [ (random.randint(1,150),random.randint(1,150)), (random.randint(1, 150), random.randint(1, 150)) ], fill = (0,0,0) ) #绘制点 for i in range(1000): draw.point( [ random.randint(1,150), random.randint(1,150) ], fill = (0,0,0) ) #4.绘制我们的文字 #我们的文字时随机的 #一定的数字 #定义我们要生成的随机数字和字母 font_list = list("qwertyuiopasdfghjklzxcvbnmQWERTYUIOPLKJHGFDSAMNBVCXZ0123456789") c_chars = "".join(random.sample(font_list,5)) #绘制字体 font = ImageFont.truetype("simsun.ttc",32) draw.text((5,5),c_chars,font = font,fill = "green") """ 第一个参数:代表文字的位置,距离上和左的距离 第二个参数:代表文字和内容 第三个参数:字体和颜色 """ #random.sample是在制定的列表当中随机的取出指定个元素 #5.定义扭曲的参数 params = [ 1-float(random.randint(1,2))/100, 0, 0, 0, 1-float(random.randint(1,2))/100, float(random.randint(1,2))/50, 0.001, float(random.randint(1,2))/50 ] #6.使用滤镜 #添加滤镜 img = img.transform((150,50),Image.PERSPECTIVE,params) """ 第一个参数:扭曲的范围, 第二个参数:扭曲的样式 第三个参数:扭曲的参数 """ #进行扭曲 img = img.filter(ImageFilter.EDGE_ENHANCE_MORE) #调用 img.show()

 

posted @ 2018-04-24 21:29  Caionk  阅读(694)  评论(0编辑  收藏  举报