短视频商城源码,制作彩色验证码
时间:2022-07-26
本文章向大家介绍短视频商城源码,制作彩色验证码,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
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()
- 如何启用WSS 3的匿名用户访问
- 移除 WordPress 后台“外观-主题” 管理功能
- 移除 WordPress 后台插件管理的“编辑”与“停用”功能
- 区域设置 ID (LCID) 表
- jquery 表单事件
- Jexus以.NET(Phalanger)方式支持PHP的网站
- jquery鼠标事件
- Jexus 负载均衡
- 用.NET Framework 2.0创建 Form设计器[翻译]
- jquery事件绑定
- Fontello:免费Web-font 图标大集合(font-face 图标集)
- 通过 wp-config.php 禁止安装、升级或编辑WordPress 主题与插件
- 利用VS2005中的Code Snippets提高开发效率
- 用schemaSpy制作数据库文档
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 实例介绍PHP中zip_open()函数用法
- php实现数字补零的方法总结
- PHP配置ZendOpcache插件加速
- 详解php用static方法的原因
- phpinfo无法显示的原因及解决办法
- 在php的yii2框架中整合hbase库的方法
- PHP安装memcache扩展的步骤讲解
- python退出循环的方法
- PHP crypt()函数的用法讲解
- Python如何自动获取目标网站最新通知
- PHP+mysql实现的三级联动菜单功能示例
- Python调用shell cmd方法代码示例解析
- 实例讲解PHP表单处理
- 用python实现名片管理系统
- keras 简单 lstm实例(基于one-hot编码)