前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >短视频商城源码,制作彩色验证码

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

原创
作者头像
yunbaokeji柯基
修改2020-10-09 15:52:38
7910
修改2020-10-09 15:52:38
举报
文章被收录于专栏:直播知识直播知识
代码语言:javascript
复制

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() ??????????????????

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
http://www.vxiaotou.com