本文为纯算法计算滑块验证码缺口坐标,适用于绝大多数滑块验证码缺口坐标的计算。
思路:
如果滑块验证码有三张图,即原图、缺口图、块图,则直接逐点比较原图和缺口图的不同即可,最开始的TX滑块验证码便是如此,index=0 为原图,index=1为缺口图,可采用逐点比较的方式来计算缺口坐标。
此处介绍一种通用的计算方法,解决无原图的情况下计算缺口坐标,以及部分用户的图来源于截图的时候也能计算出缺口坐标。
截图与非截图的区别:(截图的时候左边多了一个块图)
块图宽度计算:并非整个图片的宽度,而是内部有像素点的宽度,以TX滑块为例,块宽度为89
/// <summary> /// 获取两个像素点颜色的差异 /// </summary> /// <param name="c1"></param> /// <param name="c2"></param> /// <returns></returns> public double GetDifferentValue(Color c1, Color c2) { double y1 = 0.299 * c1.R + 0.587 * c1.G + 0.114 * c1.B; double u1 = -0.14713 * c1.R - 0.28886 * c1.G + 0.436 * c1.B; double v1 = 0.615 * c1.R - 0.51498 * c1.G - 0.10001 * c1.B; double y2 = 0.299 * c2.R + 0.587 * c2.G + 0.114 * c2.B; double u2 = -0.14713 * c2.R - 0.28886 * c2.G + 0.436 * c2.B; double v2 = 0.615 * c2.R - 0.51498 * c2.G - 0.10001 * c2.B; double d = System.Math.Sqrt((y1 - y2) * (y1 - y2) + (u1 - u2) * (u1 - u2) + (v1 - v2) * (v1 - v2)); return d; }
示例:
评论前必须登录!
注册