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

简介: 短视频商城源码,制作彩色验证码
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()
目录
相关文章
|
21天前
|
存储 NoSQL Java
|
4月前
|
前端开发 Python
五. Django项目之电商购物商城 -- 短信验证码生成
五. Django项目之电商购物商城 -- 短信验证码生成
|
4月前
|
前端开发 JavaScript 数据库
四. Django项目之电商购物商城 -- 图片验证码生成
四. Django项目之电商购物商城 -- 图片验证码生成
|
JavaScript 前端开发
原生JS实现移动端短信验证码功能
原生JS实现移动端短信验证码功能
211 0
原生JS实现移动端短信验证码功能
JavaWeb用户信息管理系统-在登录中添加验证码功能
JavaWeb用户信息管理系统-在登录中添加验证码功能
70 0
|
11天前
|
存储 JSON 前端开发
node使用token来实现前端验证码和登录功能详细流程[供参考]=‘很值得‘
本文介绍了在Node.js中使用token实现前端验证码和登录功能的详细流程,包括生成验证码、账号密码验证以及token验证和过期处理。
20 0
node使用token来实现前端验证码和登录功能详细流程[供参考]=‘很值得‘
|
2月前
|
SQL 前端开发 NoSQL
SpringBoot+Vue 实现图片验证码功能需求
这篇文章介绍了如何在SpringBoot+Vue项目中实现图片验证码功能,包括后端生成与校验验证码的方法以及前端展示验证码的实现步骤。
SpringBoot+Vue 实现图片验证码功能需求
|
2月前
|
NoSQL JavaScript Java
SpringBoot+Vue+Redis实现验证码功能、一个小时只允许发三次验证码。一次验证码有效期二分钟。SpringBoot整合Redis
这篇文章介绍了如何使用SpringBoot结合Vue和Redis实现验证码功能,包括验证码的有效期控制和一小时内发送次数的限制。
|
11月前
|
前端开发 JavaScript Java
淘东电商项目(24) -获取验证码功能
淘东电商项目(24) -获取验证码功能
54 0
|
5月前
|
存储 安全 JavaScript
使用Python的Flask框架开发验证码登录功能
使用Python的Flask框架开发验证码登录功能
123 0
下一篇
无影云桌面