欢迎来到知嘟嘟! 联系电话:13095918853 卖家免费入驻,海量在线求购! 卖家免费入驻,海量在线求购!
知嘟嘟
我要发布
联系电话:13095918853
知嘟嘟经纪人
收藏
专利号: 2016106678807
申请人: 长春工程学院
专利类型:发明专利
专利状态:已下证
专利领域: 计算;推算;计数
更新日期:2024-01-05
缴费截止日期: 暂无
价格&联系人
年费信息
委托购买

摘要:

权利要求书:

1.一种图片验证码的生成方法,其特征在于:一种图片验证码的生成方法具体是按照以下步骤进行的:步骤一、输入验证码GIF图片显示需要的文本信息,输入验证码GIF图片的宽度W和高度H,输入验证码GIF图片所对应的帧数;

所述,宽度W取值范围为100≤W≤1000;高度H取值范围为100≤H≤1000;GIF图片为动态图片;

步骤二、生成一个宽度为W和高度为H的白色背景的空白图片,将文本信息以黑色绘制在白色背景的空白图片上,将绘制后的图片转换为由0和1构成的模板二维数组;

步骤三、生成一个宽度为W和高度为H的256级灰度图片,在该256级灰度图片上的随机位置绘制LineNum条宽度随机、颜色随机的直线,将绘制后的256级灰度图片转换为由0到

255数值构成的纹理二维数组;

所述LineNum为行数;

步骤四、随机生成二维方向矢量v,建立图片列表,根据二维方向矢量v、模板二维数组和纹理二维数组输出验证码GIF图片所对应的帧数个图片,将所有输出验证码GIF图片所对应的帧数个图片放入图片列表之中;具体过程为:步骤四一、随机生成二维方向矢量v=(v1,v2),其中v1,v2均为-2到2之间的随机整数;

所述,v1为二维方向矢量的横坐标,v2为二维方向矢量的纵坐标;

步骤四二、建立图片列表,将图片列表置为空;

将步骤三得到的纹理二维数组复制三次,获得三个数组暂存数组1、暂存数组2和暂存数组3;

建立一个空白的宽度为W和高度为H的图片FrameBMP;

步骤四三、将帧的个数计数器的值置为输入验证码GIF图片所对应的帧数;

步骤四四、当帧的个数计数器大于0则转到步骤四五,否则转到步骤四十;

步骤四五、按照二维方向矢量v的方向将暂存数组1数组中的所有元素移动并存回暂存数组1数组之中;

暂存数组1数组中元素的原始位置坐标为(origX,origY),移动后的位置坐标为(disX,disY);

步骤四六、按照二维方向矢量v的反方向将暂存数组2数组中的所有元素移动并存回暂存数组2数组之中;

暂存数组2数组中元素的原始位置坐标为(origX,origY),移动后的位置坐标为(disX,disY);

步骤四七、对于模板二维数组中的每一个元素,如果该元素值为0那么将暂存数组1数组中每个位置元素值复制到暂存数组3的对应位置,如果该元素值为1那么将暂存数组2数组中每个位置元素值复制到暂存数组3的对应位置;

步骤四八、将暂存数组3数组转换为灰度图片存储到FrameBMP之中,并将FrameBMP加入到图片列表之中;

步骤四九、帧的个数计数器自减1,转到步骤四四;

步骤四十、结束图片列表建立过程;

步骤五、将图片列表中的验证码GIF图片所对应的帧数个图片转换为GIF动态图片文件,将GIF动态图片文件作为图片验证码输出。

2.根据权利要求1所述一种图片验证码的生成方法,其特征在于:所述步骤二中生成一个宽度为W和高度为H的白色背景的空白图片,将文本信息以黑色绘制在白色背景的空白图片上,将绘制后的图片转换为由0和1构成的模板二维数组;具体过程为:步骤二一、生成一个宽度为W和高度为H的白色背景的空白图片文件;

步骤二二、将文本信息以黑色方式绘制在一个宽度为W和高度为H的白色背景的空白图片文件上;

步骤二三、建立一个宽度为W和高度为H的模板二维数组;

步骤二四、对于绘制后的宽度为W和高度为H的白色背景的空白图片文件中的每一个像元,如果该像元为白色,则模板二维数组的对应位置元素赋值为0;如果该像元为黑色,则模板二维数组的对应位置元素赋值为1。

3.根据权利要求2所述一种图片验证码的生成方法,其特征在于:所述步骤三中生成一个宽度为W和高度为H的256级灰度图片,在该256级灰度图片上的随机位置绘制LineNum条宽度随机、颜色随机的直线,将绘制后的256级灰度图片转换为由0到255数值构成的纹理二维数组;具体过程为:LineNum的值通过如下公式计算:

LineNum=(W+H)×20。

4.根据权利要求3所述一种图片验证码的生成方法,其特征在于:所述步骤三中生成一个宽度为W和高度为H的256级灰度图片,在该256级灰度图片上的随机位置绘制LineNum条宽度随机、颜色随机的直线,将绘制后的256级灰度图片转换为由0到255数值构成的纹理二维数组;具体过程为:步骤三一、生成一个宽度为W和高度为H的256级灰度图片;

步骤三二、将条宽度随机、颜色随机的直线的个数计数器的值置为LineNum;

步骤三三、当LineCounter大于0时转到步骤三四,否则转到步骤三七;

所述LineCounter为条宽度随机、颜色随机的直线的个数计数器;

步骤三四、生成6个在区间(0,1)范围内的随机变量r1,r2,r3,r4,r5,r6;

步骤三五、在所述宽度为W和高度为H的256级灰度图片上绘制一条直线,该直线的起点坐标为(r1×H,r2×W),终点坐标为(r1×H+r3×20,r2×W+r4×20),宽度为2+r5×5,颜色灰度为r6×255;

所述,r1×H为直线的起点横坐标,r2×W为直线的起点纵坐标;r1×H+r3×20为直线的终点横坐标,r2×W+r4×20直线的终点纵坐标;H为高度,W为宽度;

步骤三六、LineCounter自减1,转到步骤三三;

步骤三七、建立一个宽度为W和高度为H的纹理二维数组;

步骤三八、对于所述宽度为W和高度为H的256级灰度图片的每一个像元,取出每一个像元的灰度值,将灰度值存储在纹理二维数组的对应位置的元素中。

5.根据权利要求4所述一种图片验证码的生成方法,其特征在于:所述步骤四五中移动后的位置坐标(disX,disY)计算公式表示为:disX=(origX+v1+2×H)%H;

disY=(origY+v2+2×W)%W;

所述,v1为二维方向矢量的横坐标,v2为二维方向矢量的纵坐标,%为求余数操作;

disX为移动后的位置坐标的横坐标,disY为移动后的位置坐标的纵坐标。

6.根据权利要求5所述一种图片验证码的生成方法,其特征在于:所述步骤四六中移动后的位置坐标(disX,disY)计算公式表示为:disX=(origX-v1+2×H)%H;

disY=(origY-v2+2×W)%W。

7.根据权利要求6所述一种图片验证码的生成方法,其特征在于:所述步骤五中将图片列表中的验证码GIF图片所对应的帧数个图片转换为GIF动态图片文件,将GIF动态图片文件作为图片验证码输出;具体过程为:步骤五一、建立宽度为W和高度为H的GIF动态图片文件;

步骤五二、指定GIF动态图片文件每一帧的显示持续时间为0.2秒;

步骤五三、将图片列表中的每一个图片转换为GIF图片的一帧,加入到GIF动态图片文件之中;

步骤五四、将GIF动态图片文件作为图片验证码输出。