cavas的验证码效果demo

最近做了cavas的验证码效果,如下图:
cavas的验证码效果demo_第1张图片
圈的形状和颜色随机,可设计需要选中文字的数量。核心代码如下:

//画空心圆
			class setAnimationArc{
				constructor() {}
				
				#step=1;
				#startAngle=0;
				#endAngle=0;
				#add = Math.PI * 2 / 100;
				#counterClockwise = false;
				
				drawShadow(){
					this.ctx.shadowOffsetX = 0; // 设置水平位移
					this.ctx.shadowOffsetY = 0; // 设置垂直位移
					this.ctx.shadowBlur = 10; // 设置模糊度
				}
				
				clearShadow(){
					this.ctx.shadowOffsetX = 0; // 设置水平位移
					this.ctx.shadowOffsetY = 0; // 设置垂直位移
					this.ctx.shadowBlur = 0; // 设置模糊度
				}
				
				#x=0;
				#y=0;
				#n=100;
				#varName=null;
				
				actiondo(fn) {
					this.#step = 1;
					this.#startAngle = 0;
					this.ctx.strokeStyle = '#' + ('00000' + (Math.random() * 0x1000000 << 0).toString(16)).slice(-6); //圆圈颜色                
					this.ctx.shadowColor = "#ff8b7c"||'#' + ('00000' + (Math.random() * 0x1000000 << 0).toString(16)).slice(-6); // 设置阴影颜色
					this.ctx.fillStyle = '#' + ('00000' + (Math.random() * 0x1000000 << 0).toString(16)).slice(-6);
					//圆心位置
					this.#x = this.mouseX ;
					this.#y = this.mouseY;
					clearInterval(this.#varName);
					this.#varName = setInterval(()=>{
						this.animation(fn);
					}, this.animation_interval);
				}
				
				animation (fn) {
					if (this.#step <= this.#n) {
						this.#endAngle = this.#startAngle + this.#add;
						this.drawArc(this.#startAngle, this.#endAngle);
						this.#startAngle = this.#endAngle;
						this.#step++;
					} else {
						fn&&fn();
						clearInterval(this.#varName);
					}
				}
				
				drawArc(s, e) {
					this.ctx.beginPath();
					this.ctx.arc(this.#x, this.#y, this.radius, s, e, this.#counterClockwise);
					this.ctx.stroke();
					this.ctx.closePath();
					this.ctx.fillStyle="gray";
					this.ctx.fill();  
				}
				
				toDrawArc(){
					return new Promise((r,c)=>{
						this.ctx.lineWidth = 5.0;
						this.drawShadow();
						this.actiondo(()=>{
							r();
						});
					// this.clearShadow();
					});
				}
			}
			
			//按照图片画圆
			class setAnimationArcImage{
				constructor() {
					this.getImages().then(()=>{
						this.#isLoad=true;
					});
				}
				
				#img1="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAdMAAAH1CAYAAACtCxSGAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAxhpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDM0MiwgMjAxMC8wMS8xMC0xODowNjo0MyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpCMjIyQjRGRjY5MTgxMUVBODI3MEEzRTQxOTZGNUVDMCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpCMjIyQjUwMDY5MTgxMUVBODI3MEEzRTQxOTZGNUVDMCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkIyMjJCNEZENjkxODExRUE4MjcwQTNFNDE5NkY1RUMwIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkIyMjJCNEZFNjkxODExRUE4MjcwQTNFNDE5NkY1RUMwIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+fd1oUwAAQYFJREFUeNrsnT2P5MiWng8bVdfoKnt7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"
				#img2="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAe8AAAHhCAYAAABHgza9AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAxhpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDM0MiwgMjAxMC8wMS8xMC0xODowNjo0MyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpGMDE2RDYyQTY5MTgxMUVBODU5MkEyQzc1MzgwRkFBRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpGMDE2RDYyQjY5MTgxMUVBODU5MkEyQzc1MzgwRkFBRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkYwMTZENjI4NjkxODExRUE4NTkyQTJDNzUzODBGQUFGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkYwMTZENjI5NjkxODExRUE4NTkyQTJDNzUzODBGQUFGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+thQltgAANNJJREFUeNrsncl24zqXLgmtM6LfN4fX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"
				#img3="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAU8AAAFBCAYAAAD3xy2CAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAxhpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDM0MiwgMjAxMC8wMS8xMC0xODowNjo0MyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoyNDNCMzlDRTY5MTkxMUVBODBGOEJBNThEMTM1MjNCOCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoyNDNCMzlDRjY5MTkxMUVBODBGOEJBNThEMTM1MjNCOCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjI0M0IzOUNDNjkxOTExRUE4MEY4QkE1OEQxMzUyM0I4IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjI0M0IzOUNENjkxOTExRUE4MEY4QkE1OEQxMzUyM0I4Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+lNyHYAAAHg9JREFUeNrsnQmyq7iyRSXHGRie2Lt2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"
				
				circleImg(ctx, img, x, y, r) {
					x=x-r;
					y=y-r;
				  ctx.save();
				  var d =2 * r;
				  var cx = x + r;
				  var cy = y + r;
				  this.ctx.arc(cx, cy, r, 0, 2 * Math.PI);
				  this.ctx.clip();
				  this.ctx.drawImage(img, x, y, d, d);
				  this.ctx.restore();
				}
				
				sector (x, y, radius, sDeg, eDeg) {
				    // 初始保存
				    this.ctx.save();
				    // 位移到目标点
				    this.ctx.translate(x, y);
				    this.ctx.beginPath();
				    // 画出圆弧
				    this.ctx.arc(0,0,radius,sDeg, eDeg);
				    // 再次保存以备旋转
				    this.ctx.save();
				    // 旋转至起始角度
				    this.ctx.rotate(eDeg);
				    // 移动到终点,准备连接终点与圆心
				    this.ctx.moveTo(radius,0);
				    // 连接到圆心
				    this.ctx.lineTo(0,0);
				    // 还原
				    this.ctx.restore();
				    // 旋转至起点角度
				    this.ctx.rotate(sDeg);
				    // 从圆心连接到起点
				    this.ctx.lineTo(radius,0);
				    this.ctx.closePath();
				    // 还原到最初保存的状态
				    this.ctx.restore();
				}
				#degrees=-50;
				startDraw(fn){
					this.#degrees+=8;
					this.sector(this.mouseX,this.mouseY,this.radius,-0.5*Math.PI,Math.PI*(this.#degrees/100))
					this.ctx.fill();
					if(this.#degrees<=150){
					    setTimeout(()=>{
							this.startDraw(fn);
						},this.animation_interval);
					}else{
						fn&&fn()
					}
				}
				
				#img1El = new Image();
				#img2El = new Image();
				#img3El = new Image();
				getImages(){
				let $this=this;
					return new Promise(async(r,c)=>{
						try{
						await this.loadImg(this.#img1El,this.#img1);
						await this.loadImg(this.#img2El,this.#img2);
						await this.loadImg(this.#img3El,this.#img3);
						r()
						}
						catch(e){
							this.getImages();
							c(e);
						}
					})
					
				}
				
				loadImg(imgs,src){
					imgs.src=src;
					return new Promise((r,c)=>{
						imgs.onload=function(){
							r(this);
						}
						imgs.onerror=function(){
							c(this)
						}
					});
				}
				
				getColorImg(img,width,height,color) {
					let canvas=this.toSetImg(img,width,height);
					let ctx=canvas.getContext('2d');
					let imageD = ctx.getImageData(0, 0, canvas.width, canvas.height);
					var pdata = imageD.data;
					var colorArr = color;
					for (var j = 0; j < pdata.length; j += 4) {
						pdata[j] = colorArr[0];
						pdata[j + 1] = colorArr[1];
						pdata[j + 2] = colorArr[2];
					}
					ctx.putImageData(imageD, 0, 0);
					return canvas
				}
				
				toSetImg(img,width,height){
					   var canvas=document.createElement("canvas");
					   var ctx=canvas.getContext('2d');
					   canvas.width=this.canvas.width;
					   canvas.height=this.canvas.height;
					   ctx.drawImage(img,this.mouseX-this.radius,this.mouseY-this.radius,width,height);
					   return canvas
				}
				
				toDraw(fn){
					let imgMap=[this.#img1El,this.#img2El,this.#img3El];
					console.log(this.themeColor);
					var pattern = this.ctx.createPattern(this.getColorImg(imgMap[Math.floor(Math.random() * imgMap.length + 1)-1],this.radius*2,this.radius*2,this.getColor(this.themeColor)), "no-repeat");
					this.ctx.fillStyle=pattern;
					this.#degrees=-50;
					this.startDraw(fn)
				}
				
				#isLoad=false;
				toDrawArc(){
					this.ctx.save();
					return new Promise((r,v)=>{
						if(this.#isLoad){
							this.toDraw(()=>{
								r()
								this.ctx.restore();
							});
						}else{
							this.getImages().then(()=>{
								this.#isLoad=true;
								this.toDraw(()=>{
									r()
									this.ctx.restore();
								});
							})
						}
					});
				}
			}
			
			
			class textValiCode extends setAnimationArcImage{
				constructor(obj = {}) {
					super()
					if (obj) {
						let {
							href,
							elem,
							step
						} = obj;
						if (href) this.getImg(href);
						if (elem) this.getElem(elem);
						if (step) this.setStep(step);
					}
					
					this.init();
				}

				canvas = null;
				ctx = null;

				copy({form,to}){
					//form [x,y,w,h]
					let imgData=this.ctx.getImageData.apply(null,form);
					//to [x,y]
					ctx.putImageData.apply(null,[imgData,...to]);
				}
	
				setCanvas() {
					let canvas = this.canvas = document.createElement("canvas");
					canvas.className="textValiCodeCanvas";
					this.ctx = canvas.getContext("2d");
					Array.from(this.elem.querySelectorAll('.textValiCodeCanvas')).forEach(v=>{
						v.remove();
					});
					this.elem.appendChild(canvas)
				}

				setImg() {
					let image = new Image();
					image.src = this.href;
					let that = this;
					image.onload = function() {
						let width = that.canvas.width = this.width;
						let hight = that.canvas.height = this.height;
						that.ctx.rect(0, 0, that.canvas.width, that.canvas.height);
						that.ctx.fillStyle = "rgba(0,0,0,0)";
						that.ctx.fill();
						that.ctx.drawImage(image, 0, 0, this.width, this.height);
					}
				}

				href = "";
				elem = ""

				getImg(href) {
					this.href = href;
					return this;
				}
				getElem(elem) {
					this.elem = (typeof elem == "string" ? document.querySelector(elem) : elem);
					return this;
				}

				mouseX = 0;
				mouseY = 0;

				getPont = e => {
					let box = this.canvas.getBoundingClientRect()
					this.mouseX = (e.clientX - box.left) * this.canvas.width / box.width
					this.mouseY = (e.clientY - box.top) * this.canvas.height / box.height
					this.setPont(e, [this.mouseX, this.mouseY]);
				}

				bind() {
					this.canvas.addEventListener('click', this.getPont, false);
					this.canvas.addEventListener('click', this.getPont, false)
				}

				timer = null;

				callBack = () => {}

				call(callBack) {
					this.callBack = callBack;
					return this;
				}

				clickEven = () => {}
				onClick(clickEven) {
					this.clickEven = clickEven;
					return this;
				}
				
				#retMaps=[];
				
				reset(href){
					this.#retMaps=[];
					if(href)this.href=href;
					this.stepIndex = 0;
					return this.init();
				}
				
				config(opt,isReset){
					if(typeof opt == "object"){
						for ( let n in opt){
							if(n in this){
								if(typeof n!=="function"){
									this[n]=opt[n];
								}
							}
						}
					}else if(typeof opt =="function"){
						opt&&opt.call(this);
					}
					if(isReset!==false)return this.reset();
					return this;
				}
				
				fontColor="";
				fontSize="30px";
				themeColor="#000"
				
				setTheme(color="",op){
					if(color.match(/(rgb)|(#)/)){
						this.themeColor=this.getColor(color,op)
					}else{
						console.log(this.randomColor());
						this.themeColor=this.randomColor();
					}
				}
				
				randomColor(){
					return '#' + ('00000' + (Math.random() * 0x1000000 << 0).toString(16)).slice(-6);
				}
				
				// 将rgb颜色转成hex
				colorRGB2Hex(color) {
					var rgb = color.split(',');
					var r = parseInt(rgb[0].split('(')[1]);
					var g = parseInt(rgb[1]);
					var b = parseInt(rgb[2].split(')')[0]);
				
					var hex = "#" + ((1 << 24) + (r << 16) + (g << 8) + b).toString(16).slice(1);
					return hex;
				}
				// 将hex颜色转成rgb
				hexToRgba(hex, opacity) {
					const extendHex = shortHex =>
						'#' +
						shortHex
						.slice(shortHex.startsWith('#') ? 1 : 0)
						.split('')
						.map(x => x + x)
						.join('');
					if (hex.length <= 4) hex = extendHex(hex)
					var RGBA = "rgba(" + parseInt("0x" + hex.slice(1, 3)) + "," + parseInt("0x" + hex.slice(3, 5)) + "," + parseInt(
						"0x" + hex.slice(5, 7)) + "," + opacity + ")";
					return {
						red: parseInt("0x" + hex.slice(1, 3)),
						green: parseInt("0x" + hex.slice(3, 5)),
						blue: parseInt("0x" + hex.slice(5, 7)),
						rgba: RGBA
					}
				}
				
				getColor(str, opacity) {
					if (str.match(/\#/g)) {
						let color = this.hexToRgba(str, opacity);
						return [color.red, color.green, color.blue, opacity || 1];
					} else {
						let colorStr = str.match(/(\(.*\))/g);
						if (colorStr) {
							return JSON.parse(colorStr[0].replace(/\(/g, "[").replace(/\)/g, "]"));
						}
					}
				}
				
				async setPont(e, pont) {
					if (this.stepIndex < this.step) {
						await this.toDrawArc();
						this.ctx.save();
						this.ctx.font = `bold ${this.fontSize} Microsoft YaHei`;
						let wi = this.ctx.measureText(this.stepIndex+1).width / 2;
						this.ctx.fillStyle=this.fontColor||this.themeColor;
						this.ctx.fillText(this.stepIndex+1, this.mouseX - wi, this.mouseY + wi);
						this.ctx.restore();
						this.stepIndex++;
						this.clickEven(e, pont,this.stepIndex);
						this.#retMaps.push(pont)
						if(this.stepIndex==this.step){
							this.callBack(e,this.#retMaps,this.stepIndex);
						}
					}
				}

				step = 3;
				stepIndex = 0;
				radius=30;
				animation_interval=10;
				setStep(step) {
					this.step = step;
					return this;
				}

				init() {
					this.setCanvas();
					this.setImg();
					this.bind();
					return this;
				}
			}
			
export default textValiCode
	<div class="textValiCode" ref="con">div>
	//调用
	<script>
		function randomFrom(lowerValue,upperValue)
		{
		    return Math.floor(Math.random() * (upperValue - lowerValue + 1) + lowerValue);
		}
		var obj = new textValiCode({
			href:"./test.jpg",//背景底图
			elem: ".textValiCode"//容器
		}).call(function(e,map) {
			setTimeout(()=>{
				if(confirm(`坐标依次为${JSON.stringify(map)},确定要重置嘛?`)){
					this.reset();
				}
			},100)
		}).onClick(function(e, pont,stepIndex) {
			this.config({radius:randomFrom(30,100)},false);
			this.setTheme();
		}).config({step:4});
	script>

你可能感兴趣的:(demo)