2 最简单的验证码生成



  1. 想要识别验证码,就得知道验证码是怎么生成的。下面从最基本的验证码讲起。
  2. 思路:随机生成4个数字或者字母,然后把他们画在图片的固定位置。最早的验证码就是这样生成的。
  3. 代码

# coding=utf-8
'''
Created on 2016年10月17日
程序作用:最基本的验证码,不带任何干扰
'''
from __future__ import division
from __future__ import unicode_literals
import sys
reload(sys)
sys.setdefaultencoding('utf-8')  # @UndefinedVariable

from PIL import Image,ImageFont,ImageDraw
import random

 
# 返回随机字母
def charRandom():
    return chr((random.randint(65,90)))
 
# 返回随机数字
def numRandom():
    return chr(random.randint(48,57))

# 返回随机字母或者数字
def textRandom():
    # 0-1的随机数
    if random.random()>0.7:
        return numRandom()
    else:
        return charRandom()
    
 
# 随机颜色
def colorRandom1():
    return (random.randint(64,255),random.randint(64,255),random.randint(64,255))
 
# 随机长生颜色2
def colorRandom2():
    return (random.randint(32,127),random.randint(32,127),random.randint(32,127))
 
def create_security_img():
    width = 60 * 4
    height = 60
    # 创建一个全白的图片 
    image = Image.new('RGB', (width,height), (255,255,255));
    
    # 创建draw对象
    draw = ImageDraw.Draw(image)
    
    # 创建font对象 注意这里网上大部分资料都有问题 这里应该自己去python对应的目录找字体文件的路径
    font = ImageFont.truetype(r'C:\Python27\Lib\site-packages\matplotlib\mpl-data\fonts\ttf\cmr10.ttf',36);
    
    # 输出文字
    for t in range(4):
        # 起始位置 要写的字母 字体 颜色
        draw.text((60*t+10,10), textRandom(),font=font, fill=colorRandom2())
    return image

if __name__ == '__main__':
    img=create_security_img()
    img.show()

生成的图片大概是这个样子的

下一期介绍,常见验证码的变种。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值