如何改变噪声颜色让验证码更好识别?

因为修改时间很长了,昨天贴的时候太随意了,没写全代码。今天改正。不好意思,亲们。

研究了一下wc的验证码
总结:wc验证码难认主要有一下几个原因
1、背景噪声跟文本颜色一样,不好认。
2、文本经过算法改变了坐标和形状,不好认。

简单解决办法,思路:改变背景噪声颜色,使其与文本颜色区分。实际测试效果还可以。
#抛砖引玉:
一、找到文件


system/zend/capatch/image.php

二、在487行定义噪声,使其在浅色区域内随机显示颜色,与文本颜色分开,加入代码:

$noise_color = imagecolorallocate($img, rand(100,200), rand(100,200), rand(100,200));

三、找到495行,代码如下,并将$text_color修改为$noise_color

// generate noise
for ($i=0; $i<$this->_dotNoiseLevel; $i++) {
imagefilledellipse($img, mt_rand(0,$w), mt_rand(0,$h), 2, 2, $text_color);
}
for($i=0; $i<$this->_lineNoiseLevel; $i++) {
imageline($img, mt_rand(0,$w), mt_rand(0,$h), mt_rand(0,$w), mt_rand(0,$h), $text_color);
}

四、找到556行继续将$text_color修改为$noise_color

// generate noise
for ($i=0; $i<$this->_dotNoiseLevel; $i++) {
imagefilledellipse($img2, mt_rand(0,$w), mt_rand(0,$h), 2, 2, $noise_color);
}
for ($i=0; $i<$this->_lineNoiseLevel; $i++) {
imageline($img2, mt_rand(0,$w), mt_rand(0,$h), mt_rand(0,$w), mt_rand(0,$h), $noise_color);
}


效果如下,附送快速注册弹出框效果:
QQ截图20140717130017.jpg


有兴趣的同学还可以修改后面算法。
已邀请:

wk951050759 - IT

赞同来自:

楼主,我找不到这段代码,可否告知第几行?

qg580 - 做您身边的情感专家

赞同来自:

哎哟,不错哦!

LINK - 实习易| www.shixiyi.com

赞同来自:

能不能改成彩色的字体

该问题目前已经被锁定, 无法添加新回复