Angular使用canvas畫驗證碼

效果:

在這裏插入圖片描述

HTML​源碼:

<div id="verificationCode" class="codeimg" (click)="queryVerifyCode()">
  <canvas width="100" height="43" id="verifyCanvas"></canvas>
  <img id="code_img">
</div>

ts源碼

nums = ['C', '6', 'Z', 't'];
str = '';ngOnInit() {
    this.drawCode("");
}// 繪製驗證碼
drawCode(str) {
    this.resetCode()this.canvas = document.getElementById("verifyCanvas"); //獲取HTML端畫布
    var context: CanvasRenderingContext2D = this.canvas.getContext("2d"); //獲取畫布2D上下文
    context.fillStyle = "white"; //畫布填充色
    context.fillRect(0, 0, this.canvas.width, this.canvas.height); //清空畫布
    context.fillStyle = "cornflowerblue"; //設置字體顏色
    context.font = "25px Arial"; //設置字體
    var rand = new Array();
    var x = new Array();
    var y = new Array();
    for (var i = 0; i < 4; i++) {
        rand.push(rand[i]);
        rand[i] = this.nums[i]
        x[i] = i * 20 + 10;
        y[i] = Math.random() * 20 + 20;
        context.fillText(rand[i], x[i], y[i]);
    }
    str = rand.join('').toUpperCase();
    //畫3條隨機線
    for (var i = 0; i < 3; i++) {
        this.drawline(this.canvas, context);
    }// 畫30個隨機點
    for (var i = 0; i < 30; i++) {
        this.drawDot(this.canvas, context);
    }
    this.convertCanvasToImage(this.canvas);
    return str;
}// 隨機線
drawline(canvas, context) {
    context.moveTo(Math.floor(Math.random() * canvas.width), Math.floor(Math.random() * canvas.height)); //隨機線的起點x座標是畫布x座標0位置,y座標是畫布高度的隨機數
    context.lineTo(Math.floor(Math.random() * canvas.width), Math.floor(Math.random() * canvas.height)); //隨機線的終點x座標是畫布寬度,y座標是畫布高度的隨機數
    context.lineWidth = 0.5; //隨機線寬
    context.strokeStyle = 'rgba(50,50,50,0.3)'; //隨機線描邊屬性
    context.stroke(); //描邊,即起點描到終點
}
// 隨機點(所謂畫點其實就是畫1px像素的線,方法不再贅述)
drawDot(canvas, context) {
    var px = Math.floor(Math.random() * canvas.width);
    var py = Math.floor(Math.random() * canvas.height);
    context.moveTo(px, py);
    context.lineTo(px + 1, py + 1);
    context.lineWidth = 0.2;
    context.stroke();}
// 繪製圖片
convertCanvasToImage(canvas) {
    document.getElementById("verifyCanvas").style.display = "none";
    this.image = document.getElementById("code_img");
    this.image.src = canvas.toDataURL("image/png");
    return this.image;
}

————end————

喜歡本文的朋友們,歡迎長按下圖關注訂閱號凌飛心得,收看更多精彩內容
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章