开发基于ASP.NET WebService的图片验证码服务(2)

2008-02-22 09:35:38来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折


graph.Dispose();

double dBaseAxisLen = bXDir ? (double)destBmp.Height : (double)destBmp.Width;

for(int i=0;i<destBmp.Width;i )
{
for(int j=0;j<destBmp.Height;j )
{
double dx = 0;
dx = bXDir ? (PI2*(double)j)/dBaseAxisLen : (PI2*(double)i)/dBaseAxisLen;
dx = dPhase;
double dy = Math.Sin(dx);

// 取得当前点的颜色
int nOldX = 0,nOldY = 0;
nOldX = bXDir ? i (int)(dy*dMultValue) : i;
nOldY = bXDir ? j : j (int)(dy*dMultValue);

System.Drawing.Color color = srcBmp.GetPixel(i,j);
if(nOldX >= 0 && nOldX < destBmp.Width
&& nOldY >=0 && nOldY < destBmp.Height)
{
destBmp.SetPixel(nOldX,nOldY,color);
}
}
}

return destBmp;
}

  开头的示例图片,是两次波形效果的叠加,两次效果分别针对X轴方向和Y轴方向,如果取消对边缘背景色的填充,可以看到算法对图形的影响,如下图:
开发基于ASP.NET WebService的图片验证码服务

  这样产生的验证码,看起来很像Google站点上的验证码吧,当然,如果你有兴趣,还可以添加其他的滤镜效果,如拉伸,旋转,马赛克等。但是注意一点,网站验证码不是越复杂越好,要在速度和安全上找到一个平衡点。

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:六步使用ICallbackEventHandler实现无刷新回调

下一篇:.net 下用javascript调用webservice