python+ PIL 生成验证码图片

from PIL import Image , ImageDraw ,ImageFont 

import random


def Verify():
    code = []
    width = 150  ##生成的图片宽度
    height = 60  ###生成的图片高度
    bgcolor = (255,255,255)   ##生成的图片背景色
    img = Image.new('RGB',(width,height),bgcolor)  ##生成图片
    
    draw = ImageDraw.Draw(img)
    while True:
        s = random.randint(48,90)
        if s>57 and s<65:
            continue
        else:
            code.append(chr(s))

            if len(code)==5:
                break 
 
    print(code)
    draw.text( (random.randint(10, 20),random.randint(0, 5)),
               code[0],
               (10,7,100),
               font = ImageFont.truetype('simsun.ttc',random.randint(35,50))  )
    draw.text( (random.randint(25, 40),random.randint(0, 5)),
               code[1],
               (10,7,100),
               font = ImageFont.truetype('simsun.ttc',random.randint(35,50))  )
    draw.text( (random.randint(45, 60),random.randint(0, 5)),
               code[2],
               (10,7,100),
               font = ImageFont.truetype('simsun.ttc',random.randint(35,50))  )
    draw.text( (random.randint(65, 80),random.randint(0, 5)),
               code[3],
               (10,7,100),
               font = ImageFont.truetype('simsun.ttc',random.randint(35,50))  )
    draw.text( (random.randint(85, 100),random.randint(0, 5)),
               code[4],
               (10,7,100),
               font = ImageFont.truetype('simsun.ttc',random.randint(35,50))  )
    params = [1 - float(random.randint(1, 2)) / 100,
              0.1,
              0.8,
              0,
              1 - float(random.randint(1, 10)) / 100,
              float(random.randint(1, 2)) / 500,
              0.001,
              float(random.randint(1, 2)) / 500
              ]
  
    img = img.transform((150,60), Image.PERSPECTIVE, params)
    
    
    
    img.show()
    return code
    

            
            
    
if __name__=='__main__':
    Verify()
    
            

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值