思路:
1. 准备好10张或20张不同规格的图片,按规格分类到不同文件夹,每个文件夹的图片从1开始顺序递增命名,为了随机选择图片。
2.前端提交规格比如200*300,根据规格选择原图,并初始化 小正方块的长 b 和 小正方块的y轴坐标 c(不用随机,固定值) 等其他数据。
3. 随机在原图的[b,原图宽度-b]上取一个值 a作为切图的x坐标开始点,y坐标,后端使用gdi 切出作为填充的小方块图片,把a保存到session中。
然后把原图 [a,c]处的区域填充,作为大图。
4. 图片转base64,返回大图 小图 c 小图 长 宽
5. 前端渲染,实现 刷新图片,拖拽功能。
6 前端拖动结束,把x轴坐标传回,和session中存的a值比对,在误差范围内验证通过。否则 session保存错误数加一,超过多次错误,可在前端控制限制验证。
这个作者还加了图片混淆功能,和判断是否人机验证功能。详细看源码,代码和逻辑都十分的清晰。