验证码技术de个人研究
最近对验证码很感兴趣,只是不是很了解其中的某些技术,做了个很简单的实现
(因为找不到现成的参考代码,下面的仅仅是我的猜测,具体实现技术我不知道):
//显示验证码的图片大小
Bitmap pic = new Bitmap(65, 30);
Graphics grf = Graphics.FromImage(pic);
grf.Clear(Color.Red);
SolidBrush sb = new SolidBrush(Color.Yellow);
Pen p = new Pen(Color.Yellow, 18);
grf.DrawString("1234", new Font("Consolas", 18, FontStyle.Bold), sb, new PointF(1, 1));
//想增加阅读难度
for (int i = 1; i < 30; i++)
{
Random rad = new Random();
int posX = rad.Next(64);
int posY = rad.Next(29);
pic.SetPixel(posX, posY, Color.White);
}
pic.Save(Response.OutputStream, System.Drawing.Imaging.ImageFormat.Gif);
问题很快就出现了:
1):发现只画了一个干扰白点,而不是计划的30个..
2):如何将生成的图像显示到一个图片控件(我猜测是显示在<img />控件中)?
下面是在某站点摘录的代码:
<label>验证码:</label>
<input type="text" name="verifycode" id="verifycode" class="ipt_tx" style="width:65px;" tabindex="3" >
<img id="verifycodeImg" src="http://verify.xunlei.com/image" /> <a href="javascript:void(0);" onclick="setVerifyCode($('verifycodeImg'));return false;"><img src="/img/btn_refresh.gif" /></a>