python 验证码

#coding=utf-8

import random #随机模块,可以生成随机数
from PIL import Image,ImageDraw,ImageFont,ImageFilter

#Image 负责处理图片
#ImageDraw 负责处理画笔
#Imagefont 负责处理字体
#ImageFilter 负责处理滤镜

#项目思路:
   #1、定义一张图片
img=Image.new("RGB",(150,50),(255,255,255))
"""
 第一个参数:代表我们采用的RGB颜色模式
 第二个参数:代表图片大小
 第三个参数:具体的图片颜色
"""
   #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("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789")
c_chars = "".join(random.sample(font_list,7))
#random.sample是在制定的列表当中随机的取出指定个元素
      #绘制字体
          #我们需要先定制一下字体
font = ImageFont.truetype("simsun.ttc",32)
draw.text((5,5),c_chars,font=font,fill="green")
"""
第一个参数:代表文字的位置,距离上和左的距离
第二个参数:代表文字的内容
第三个参数:代表字体
第四个参数:字体颜色
"""         
   #5、定义扭曲的参数
params=[1-float(random.randint(1,2))/100,
       0,
       0,
       0,
       1-float(random.randint(1,2))/100,
       float(random.randint(1,2))/500,
       0.001,
       float(random.randint(1,1))/500,
      ]   
   #6、使用滤镜
    #添加滤镜
img=img.transform((150,50),Image.PERSPECTIVE,params)
"""
第一个参数:扭曲的范围
第二个参数:扭曲的样式
第三个参数:扭曲的参数

"""   

          #进行扭曲

img=img.filter(ImageFilter.EDGE_ENHANCE_MORE)       
img.show()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

度假的小鱼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值