一个简单小例子实现验证码干扰点效果。
实现效果:
实现原理:
获取图像信息——>修改图像信息
代码:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<style type="text/css">
*{
margin: 0;
padding: 0;
}
canvas{
display: block;
margin: 300px auto;
}
</style>
<script type="text/javascript">
window.onload = function(){
var can = document.getElementById("can");
var cv = can.getContext('2d');
//绘制矩形
cv.fillStyle = 'black';
cv.fillRect(0,0,400,200);
//设置文字
cv.fillStyle = 'red';
var str = '好好学习,天天向上';
cv.font = '40px Arial';
cv.fillText(str,25,120);
//获得图像信息
var imgData = cv.getImageData(0,0,400,200);
//获得像素点个数
var pointNum = imgData.data.length/4;
//修改的像素(干扰点)点个数,这里假设修改1000个
for(var i=0;i<1000;i++){
//取随机数
var num = Math.floor(Math.random()*pointNum);
//计算像素点对应的四条信息从几号开始
var start = (num-1)*4;
imgData.data[start] = Math.floor(Math.random()*256);
imgData.data[start+1] = Math.floor(Math.random()*256);
imgData.data[start+2] = Math.floor(Math.random()*256);
}
cv.putImageData(imgData,0,0);
}
</script>
</head>
<body>
<canvas id="can" width="400" height="200"></canvas>
</body>
</html>
如有问题欢迎交流。
如转载请注明出处,谢谢!
网友评论