短视频商城源码,制作彩色验证码

简介: 短视频商城源码,制作彩色验证码
from random import choice, randint, randrange
import string
from PIL import Image, ImageDraw, ImageFont

#返回length长度随机字母和数字
def selectedCharacters(length):
    result = ''.join(choice(string.ascii_letters+string.digits) for _ in range(length))
    return result

#返回随机色
def getColor():
    r = randint(0,255)
    g = randint(0,255)
    b = randint(0,255)
    return (r,g,b)

def makeIMG():
    #图片属性
    size=[200,100]
    characterNumber=6
    bgcolor=(255,255,255)
    imageTemp = Image.new('RGB', size, bgcolor)
    draw = ImageDraw.Draw(imageTemp)
    text = selectedCharacters(characterNumber)
    font = ImageFont.truetype('c:\\windows\\fonts\\BRADHITC.TTF', 48)
    width, height = draw.textsize(text, font)
    
    #判断尺寸
    if width+2*characterNumber>size[0] or height>size[1]:
        print('Dimension are not legitimate')
        return
    
    # 随机字符位置
    startX = 0
    widthEachCharater = width//characterNumber
    for i in range(characterNumber):
        startX += widthEachCharater + 1
        position = (startX, (size[1]-height)//2+randint(-5,5))
        draw.text(xy=position, text=text[i], font=font, fill=getColor())
        
    # 对像素位置进行微调,实现扭曲的效果
    imageFinal = Image.new('RGB', size, bgcolor)
    pixelsFinal = imageFinal.load()
    pixelsTemp = imageTemp.load()
    for y in range(size[1]):
        offset = randint(-1,0)
        for x in range(size[0]):
            newx = x+offset
            if newx>=size[0]:
                newx = size[0]-1
            elif newx<0:
                newx = 0
            pixelsFinal[newx,y] = pixelsTemp[x,y]

    # 随机色像素点            
    draw = ImageDraw.Draw(imageFinal)
    for i in range(int(size[0]*size[1]*0.05)):
        draw.point((randrange(size[0]), randrange(size[1])), fill=getColor())

    # 绘制5条随机干扰直线
    for i in range(5):
        start = (0, randrange(size[1]))
        end = (size[0], randrange(size[1]))
        draw.line([start, end], fill=getColor(), width=1)

    # 绘制5条随机弧线
    for i in range(5):
        start = (-50, -50)
        end = (size[0]+10, randint(0, size[1]+10))
        draw.arc(start+end, 0, 360, fill=getColor())
        
    imageFinal.save("image.jpg")
    imageFinal.show()

makeIMG()
目录
相关文章
|
2月前
|
存储 NoSQL Java
|
5月前
|
前端开发 Python
五. Django项目之电商购物商城 -- 短信验证码生成
五. Django项目之电商购物商城 -- 短信验证码生成
|
5月前
|
前端开发 JavaScript 数据库
四. Django项目之电商购物商城 -- 图片验证码生成
四. Django项目之电商购物商城 -- 图片验证码生成
|
6月前
|
前端开发 安全 Java
SpringBoot 实现登录验证码(附集成SpringSecurity)
SpringBoot 实现登录验证码(附集成SpringSecurity)
407 0
|
3月前
|
存储 NoSQL 数据库
认证服务---整合短信验证码,用户注册和登录 ,密码采用MD5加密存储 【二】
这篇文章讲述了在分布式微服务系统中添加用户注册和登录功能的过程,重点介绍了用户注册时通过远程服务调用第三方服务获取短信验证码、使用Redis进行验证码校验、对密码进行MD5加密后存储到数据库,以及用户登录时的远程服务调用和密码匹配校验的实现细节。
认证服务---整合短信验证码,用户注册和登录 ,密码采用MD5加密存储 【二】
|
1月前
|
Java
Java 登录输入的验证码
Java 登录输入的验证码
27 1
|
1月前
|
C#
C# 图形验证码实现登录校验代码
C# 图形验证码实现登录校验代码
78 2
|
2月前
|
存储 JSON 前端开发
node使用token来实现前端验证码和登录功能详细流程[供参考]=‘很值得‘
本文介绍了在Node.js中使用token实现前端验证码和登录功能的详细流程,包括生成验证码、账号密码验证以及token验证和过期处理。
49 0
node使用token来实现前端验证码和登录功能详细流程[供参考]=‘很值得‘
|
3月前
|
资源调度 JavaScript API
nest.js + sms 实现短信验证码登录
本文介绍了在Nest.js框架中集成短信验证码登录的实现方案,详细阐述了使用阿里云短信服务的配置流程、资质申请、短信模板设置,并提供了API调用示例和工程代码的运行步骤。
nest.js + sms 实现短信验证码登录
|
3月前
【Azure 环境】中国区Azure B2C 是否支持手机验证码登录呢?
【Azure 环境】中国区Azure B2C 是否支持手机验证码登录呢?
下一篇
无影云桌面