一种生成验证码图片的方法和装置的制作方法

文档序号:6374475阅读:126来源:国知局
专利名称:一种生成验证码图片的方法和装置的制作方法
技术领域
本发明涉及互联网安全技术领域,尤其涉及一种生成验证码图片的方法和装置。
背景技术
随着互联网应用的日益普及,其市场地位越来越重要,一些人试图在互联网服务这个开放式平台中制作或使用“注册机”软件,用于自动填写网络上的各种登陆表单,从而达到发送大量垃圾信息的目的。在互联网技术领域,通常使用一种能区分某一个请求背后的用户是计算机还是人的公共全自动程序来避免“注册机”带来的安全隐患,这类模块称为验证码,常见于图像的形式。
目前验证码图片的应用比较普遍,对于生成的一张验证码图片,电脑前的用户通过目测可以比较容易的得到需要获取的答案,如图片上的文字是什么,然后填写答案提交给提供验证码的服务器,服务器通过后台验证来确定是否输入正确,若正确则进入下一环节,这样可以在一定程度上干扰“注册机”软件程序的进度使之识别率降低,从而在一定程度上防止了“注册机”软件对互联网服务的攻击。目前验证码类型众多,包括输入数字、字母或中文的方式,靠移动鼠标完成简单的任务的方式,或解答一些简单逻辑问题的方式等
坐寸ο但是在现有技术中,在同一网站的不同页面中一般只能生成同一风格甚至是同一字体的验证码,但是,不同网页对验证码的难度需求却不尽相同,现有技术未针对不同网站提供一套通用的生成验证码图片的方法,用以为不同网站的不同网页生成包括不同难易程度的验证码的验证码图片,因此不适合互联网当前的发展需求。

发明内容
有鉴于此,本发明的主要目的在于提供一种生成验证码图片的方法和装置,实现了为网站中的不同网页提供不同难易程度的验证码图片的目的。为实现上述目的,本发明提供的一种生成验证码图片的方法,包括获取当前验证码参数,所述验证码参数包括用户设定参数和随机参数;根据所述用户设定参数中的至少一个参数和所述随机参数中的至少一个参数生成初始验证码图片;根据所述随机参数中的背景图选取参数从预先建立的背景图库中随机选取一幅背景图片;根据所述随机参数中的区域选取参数从所述背景图片中获取随机选取的区域,并利用所述随机选取的区域填充所述初始验证码图片的字符和背景后,生成最终验证码图片。优选的,在上述方法中,所述根据所述用户设定参数中的至少一个参数和所述随机参数中的至少一个参数生成初始验证码图片包括根据所述随机参数中的字符串长度参数和字符串内容参数,生成属于用户设定参数中字体集参数所对应的字符范围内的验证码字符串;调用计算机内部字符贴图函数,按所述用户设定参数中的字体参数和字体集参数将所述验证码字符串中的每个字符以设定字体分别贴图到对应的空白字符图像画布中;根据所述用户设定参数中的难易度参数和所述随机参数中的字符特效处理参数,按照随机设定的旋转角度和缩放倍数对所述字符图像画布中的单个字符进行旋转和/或缩放的处理;将处理后的所有字符图像画布以所述用户设定参数中的图像质量参数所设定的图像清晰度依次贴图到一个空白的验证码图像画布中;调整所述验证码图像画布中每相邻两个字符之间的距离;
根据所述用户设定参数中的难易度参数和所述随机参数中的图片特效处理参数,对字符距离调整后的验证码图像画布作抗破解变换后生成初始验证码图片。优选的,在上述方法中,所述将处理后的所有字符图像画布以所述用户设定参数中的图像质量参数所设定的图像清晰度依次贴图到一个空白的验证码图像画布中之前还包括根据所述用户设定参数中的难易度参数和所述随机参数中的字符特效处理参数,对所述旋转和/或缩放后的单个字符进行字体特效处理,所述字体特效处理包括随机立体感和/或空心字体处理;优选的,在上述方法中,所述根据所述随机参数中的背景图选取参数从预先建立的背景图库中随机选取一幅背景图片之前还包括对从所述背景图库中选取的背景图片进行模糊处理。优选的,在上述方法中,所述对从所述背景图库中选取的背景图片进行模糊处理包括将第一背景图片划分为N个设定尺寸的区域,所述第一背景图片为未进行模糊处理前的原始图片,N彡1,N为整数;对所述第一背景图片中的每个区域进行模糊处理,以使每个区域的图像模糊度均大于或等于第一阈值;融合所述第一背景图片中经模糊处理后的每相邻两个区域的边缘,以使所述第一背景图片的所有区域合成为一个整体图片后得到第二背景图片;计算所述第二背景图片的图像模糊度;判断所述第二背景图片的图像模糊度是否大于或等于第二阈值,如果是,则对所述第二背景图片进行伽马变换,用以增强所述第二背景图片的色彩,如果否,则执行将所述第二背景图片划分为N个设定尺寸的区域并对每个区域进行模糊处理的步骤。优选的,在上述方法中,所述对所述第一背景图片中的每个区域进行模糊处理包括对所述第一背景图片中的一个区域进行高斯模糊处理后,计算所述一个区域的图像模糊度;如果所述一个区域的图像模糊度小于所述第一阈值,则对模糊处理后的一个区域再次进行高斯模糊处理,直到所述一个区域的图像模糊度大于或等于所述第一阈值为止。优选的,在上述方法中,所述根据所述随机参数中的区域选取参数从所述背景图片中获取随机选取的区域,并利用所述随机选取的区域填充所述初始验证码图片的字符和背景包括根据所述随机参数中的区域选取参数随机选取所述背景图片中的第一区域和第二区域,所述第一区域与所述第二区域的尺寸与所述初始验证码图片的尺寸相同;对所述第一区域进行色彩变换,用以增强所述第一区域与所述第二区域之间的色
彩差异度;利用经色彩变换后的第一区域填充所述初始验证码图片中的验证码字符区域,并利用所述第二区域填充所述初始验证码图片的背景区域。优选的,上述方法还包括根据所述用户设定参数中的输出验证码图片尺寸参数,调整所述最终验证码图片 为预设尺寸和预设格式后,在预设的显示位置向用户显示所述最终验证码图片。本发明提出的一种生成验证码图片的装置,包括获取模块,用于获取当前验证码参数,所述验证码参数包括用户设定参数和随机参数;第一生成模块,用于根据所述用户设定参数中的至少一个参数和所述随机参数中的至少一个参数生成初始验证码图片;选取模块,用于根据所述随机参数中的背景图选取参数从预先建立的背景图库中随机选取一幅背景图片;第二生成模块,用于根据所述随机参数中的区域选取参数从所述背景图片中获取随机选取的区域,并利用所述随机选取的区域填充所述初始验证码图片的字符和背景后,生成最终验证码图片。优选的,在上述装置中,所述第一生成模块包括第一生成单元,用于根据所述随机参数中的字符串长度参数和字符串内容参数生成属于用户设定参数中字体集参数所对应的字符范围内的验证码字符串;字符贴图单元,用于调用计算机内部字符贴图函数,按所述用户设定参数中的字体参数和字体集参数将所述验证码字符串中的每个字符以设定字体分别贴图到对应的空白字符图像画布中;第一处理单元,用于根据所述用户设定参数中的难易度参数和所述随机参数中的字符特效处理参数,按照随机设定的旋转角度和缩放倍数对所述字符图像画布中的单个字符进行旋转和/或缩放的处理;整体贴图单元,用于将处理后的所有字符图像画布以所述用户设定参数中的图像质量参数所设定的图像清晰度依次贴图到一个空白的验证码图像画布中;调整单元,用于调整所述验证码图像画布中每相邻两个字符之间的距离;第二生成单元,用于根据所述用户设定参数中的难易度参数和所述随机参数中的图片特效处理参数,对字符距离调整后的验证码图像画布作抗破解变换后生成初始验证码图片。优选的,在上述装置中,其特征在于,所述第一生成模块还包括第二处理单元,用于根据所述用户设定参数中的难易度参数和所述随机参数中的字符特效处理参数,对所述旋转和/或缩放后的单个字符进行字体特效处理,所述字体特效处理包括随机立体感和/或空心字体处理。优选的,在上述装置中,所述装置还包括图片处理模块,用于在所述选取模块从预先建立的背景图库中随机选取一幅背景图片之前,对从所述背景图库中选取的背景图片进行模糊处理。优选的,在上述装置中,所述图片处理模块包括区域划分单元,用于将第一背景图片划分为N个设定尺寸的区域,所述第一背景图片为未进行模糊处理前的原始图片,N彡1,N为整数;区域模糊处理单元,用于对所述第一背景图片中的每个区域进行模糊处理,以使每个区域的图像模糊度均大于或等于第一阈值;
区域融合单元,用于融合所述第一背景图片中经模糊处理后的每相邻两个区域的边缘,以使所述第一背景图片的所有区域合成为一个整体图片后得到第二背景图片;图片模糊度计算单元,用于计算所述第二背景图片的图像模糊度;图片阈值判断单元,用于判断所述第二背景图片的图像模糊度是否大于或等于第二阈值;伽马变换单元,用于在所述图片阈值判断单元判断得到的所述第二背景图片的图像模糊度大于或等于第二阈值时,对所述第二背景图片进行伽马变换,用以增强所述第二背景图片的色彩;图片重复处理单元,用于在所述图片阈值判断单元判断得到的所述第二背景图的图像模糊度小于所述第二阈值时,继续利用所述区域划分单元执行将所述第二背景图片划分为N个设定尺寸的区域后,对每个区域进行模糊处理的步骤。优选的,在上述装置中,所述区域模糊处理单元包括区域模糊单元,用于对所述第一背景图片中的一个区域进行高斯模糊处理;区域模糊度计算单元,用于计算所述一个区域的图像模糊度;区域阈值判断单元,用于判断所述一个区域的图像模糊度是否大于或等于所述第一阈值;区域重复处理单元,用于在所述区域阈值判断单元判断得到的所述一个区域的图像模糊度小于所述第一阈值时,利用所述区域模糊单元对模糊处理后的一个区域再次进行高斯模糊处理,直到所述一个区域的图像模糊度大于或等于所述第一阈值为止。优选的,在上述装置中,所述第二生成模块包括选取单元,用于根据所述随机参数中的区域选取参数随机选取所述背景图片中的第一区域和第二区域,所述第一区域与所述第二区域的尺寸与所述初始验证码图片的尺寸相同;色彩变换单元,用于对所述第一区域进行色彩变换,用以增强所述第一区域与所述第二区域之间的色彩差异度;第一填充单元,用于利用经色彩变换后的第一区域填充所述初始验证码图片中的字符串;第二填充单元,用于利用所述第二区域填充所述初始验证码图片的背景区域。优选的,在上述装置中,所述装置还包括显示模块,用于根据所述用户设定参数中的输出验证码图片尺寸参数,调整所述最终验证码图片为预设尺寸和预设格式后,在预设的显示位置向用户显示所述最终验证码图片。可见,本发明生成验证码图片的方法和装置,通过获取当前验证码参数,所述验证码参数包括用户设定参数和随机参数;根据所述验证码参数中的部分参数生成初始验证码图片;利用随机参数从预先建立的背景图库中随机选取一幅背景图片,并利用所述背景图片填充所述初始验证码图片的字符和背景后,生成最终验证码图片。由于可以根据需求对验证码参数中的用户设定参数进行不定期的调整,以及验证码参数中随机参数所固有的随机性,使得针对不同的网页会对应有不同的验证码参数,所以生成的验证码图片的难易程度将有所不同,基于验证码参数的可设置性和随机性,可针对不同网页的需求生成不同风格和不同难易度的验证码图片,从而增强了验证码的防破解能力,提高了网络页面的安全性。


为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图I为本发明生成验证码图片的方法的流程示意图;图2A为本发明生成初始验证码图片的方法的实施例I的流程示意图;图2B为本发明生成初始验证码图片的方法的实施例2的流程示意图;图3为本发明对背景图片进行模糊处理的方法的流程示意图;图4为本发明对背景图片中一个区域进行模糊处理的方法的流程示意图;图5为本发明利用背景图片填充初始验证码图片的流程示意图;图6为本发明生成验证码图片的装置的一种结构示意图; 图7为本发明生成验证码图片的装置的另一种结构示意图;图8为本发明生成验证码图片的装置中的第一生成模块的结构示意图;图9为本发明生成验证码图片的装置中的图片处理模块的结构示意图;图10为本发明图片处理模块中的区域模糊处理单元的结构示意图;图11为本发明生成验证码图片的装置中的第二生成模块的结构示意图;图12为根据不同用户设定参数所生成的不同图片示例。
具体实施例方式为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。参见图I所示,图I为本发明提供的生成验证码图片的方法的流程示意图,实现本发明生成验证码图片的方法的步骤如下步骤101 :获取当前验证码参数,所述验证码参数包括用户设定参数和随机参数。
本实施例中,上述验证码参数包括用户设定参数和随机参数,可通过用户交互接口获取用户设定参数,通过调用内置随机发生器获取随机参数,程序开发人员可通过人机交互界面更改用户设定参数,而随机参数是由计算机系统内部随机生成的。其中,所述用户设定参数至少包括以下五项I)字体参数和字体集参数字体是指文字的风格式样式,如“Arial”、“宋体”等,通常计算机系统自带若干字体;而字体集是指某一语种所有文字的集合体,如“英文集”、“中文集”等。2)难易度参数可通过设置验证码难易度参数的范围来定义验证码的识别难度,例如,设置验证码难度参数的取值范围为(A,B),例如(-1. 0,1.0),其中,参数取值越大,验证码识别难度 越低,参数取值越小,验证码识别难度越高;当然,也可采用相反的设置,即参数取值越大,验证码难度越高,参数取值越小,验证码难度越低。3)验证码长度范围设置参数一般情况下,图片验证码中将包含多个字符,所以程序开发人员可以通过用户交互接口输入N和M两个参数,其中,O < N ^ M,也就是说,程序开发人员可以根据具体的需要指定一个验证码字符长度的区间,而在具体生成验证码时,系统会在所述区间中任意选取一个整数作为验证码的长度。长度选取的过程可以是随机的,也就是说,每一次生成的验证码字符长度是不一样的,这样可以提升验证码的抗暴力破解性能;也可以让程序开发人员输入固定字符长度(设置N = M),这样,对于同一页面每一次生成的验证码字符的长度是固定的不变的。4)输出验证码图片尺寸参数用于调整最终生成的验证码图片的输出尺寸,目的是使验证码图片以一定的宽度和高度显示在某网页的设定位置,图片的宽和高的单位为像素。5)图像质量参数可设置验证码图片的质量参数的取值范围为(C,0),例如(0,1),本发明默认参数取值越大,图像细节越清晰,参数取值越小,图片细节越模糊;当然,也可采用相反的设置,即参数取值越小,图像细节越清晰,参数取值越大,图片细节越模糊。其中,所述随机参数至少包括以下四项I)字符串长度参数在上述用户设定参数中的验证码长度范围设置参数中,可在包括N和M在内的设定范围内随机选取一个整数作为验证码字符串的长度;2)字符串内容参数3)背景图选取参数和区域选取参数验证码图片使用何种背景图,以及使用的背景图中选取的背景区域和字符前景区域的位置。4)字符特效处理参数和图片特效处理参数验证码图片中每个字符的特效和图像处理过程的特效,特效可以包括空心字效果、干扰噪声,干扰线等。步骤102 :根根据所述用户设定参数中的至少一个参数和所述随机参数中的至少一个参数生成初始验证码图片。由于不同网页所需求的验证码难度、外观效果、尺寸等设置不同,所以生成的初始验证码的字符风格和字符长度等将不同,也就是说,生成的验证码中的字符可能既包括英文字符又包括中文字符,且每个字符的字体不同或者部分相同部分不同,每个字符的特效处理也将有所不同。根据上述验证码参数,本发明可生成具有黑色文字和白色背景的初始验证码图片,且该初始验证码图片中的字符是经过特效处理的。步骤103 :根据所述随机参数中的背景图选取参数从预先建立的背景图库中随机选取一幅背景图片。本实施例中,可以从所述背景图库中的所有图片中随机选取其中一幅背景图片,也可规定其中部分背景图片作为本次的待选图片,从待选的部分图片中随机的选取一幅图片。步骤104 :根据所述随机参数中的区域选取参数从所述背景图片中获取随机选取的区域,并利用所述随机选取的区域填充所述初始验证码图片的字符和背景后,生成最终 验证码图片。本发明生成验证码图片的方法,可以根据需求对验证码参数中的用户设定参数进行不定期的调整,另外,由于验证码参数中随机参数所固有的随机性,使得针对不同的网页会获取到不同的验证码参数,则生成的验证码图片的难易程度将有所不同,基于验证码参数的可设置性和随机性,可针对不同网页的需求生成不同风格和不同难易度的验证码图片,从而增强了验证码的防破解能力。在生成最终验证码图片后,便可根据所述用户设定参数中的输出验证码图片尺寸参数,调整所述最终验证码图片为预设尺寸和预设格式后,在预设的显示位置向用户显示所述最终验证码图片。所述预设格式也就是在设定位置处显示图片的格式,包括bmp, jpg, jpeg,png, tiff,gif, pcx,tga,exif,fpx,svg,psd,cdr,pcd,dx f,ufo,eps, ai, raw 等。本发明将生成的最终验证码图片向用户进行显示,可以方便用户输入验证码图片中的字符,以实现身份验证等目的。可以采用以下方法实现本发明生成图片验证码的方法中的步骤102,参见图2A所示,图2A是步骤102的流程图,实现本发明生成初始验证码图片的实施例I的步骤如下步骤2A01 :根据随机参数中的字符串长度参数和字符串内容参数生成属于用户设定参数中字体集参数所对应的字符范围内的验证码字符串。本发明根据用户设定参数中的字体集、随机参数中的字符串长度和字符串内容等参数至少确定了验证码的内容、长度和字体。步骤2A02 :调用计算机内部字符贴图函数,按用户设定参数中的字体参数和字体集参数将所述验证码字符串中的每个字符以设定字体分别贴图到对应的空白字符图像画布中。调用计算机内部字符贴图函数以实施例当前设置的字体将随机生成的验证码字符串中的每个字符分别贴图到相应的单个字符图像画布中,即字符的图像化;也就是将每个字符分别贴图到不同的字符图像画布上,即一个字符图像对应一个字符图像画布,字符颜色可以为黑色,字符图像画布底色为白色。步骤2A03 :根据用户设定参数中的难易度参数和随机参数中的字符特效处理参数,按照随机设定的旋转角度和缩放倍数对所述字符图像画布中的单个字符进行旋转和/或缩放的处理 。为适应不同场合的需求,可根据难易度参数的大小,对所述字符图像画布中的单个字符进行旋转缩放处理,对于每个字符可选择以下任一项进行处理旋转所述单个字符;放大或缩小所述单个字符;旋转并放大所述单个字符;旋转或缩小所述单个字符。例如,当随机设定的旋转角度为O度时,不对字符进行旋转操作,当旋转角度为正数时,使字符顺时针旋转,反之,当旋转角度为负数时,使字符逆时针旋转;当缩放倍数为I时,不对字符做缩放操作,当缩放倍数大于I时,则按缩放倍数放大字符,当缩放倍数小于I时,则按缩放倍数缩小字符,此外,缩放倍数为正数。此处字符特效处理参数决定了每个验证码字符的旋转角度、字符缩放尺寸等内容;且针对不同的验证码难易度,本发明包括但不限于旋转和缩放等操作内容。步骤2A04:将处理后的所有字符图像画布以所述用户设定参数中的图像质量参数所设定的图像清晰度依次贴图到一个空白的验证码图像画布中。步骤2A05 :调整所述验证码图像画布中每相邻两个字符之间的距离。 本发明调整字符间距的方法包括但不限于以下两种方法一按照从左到右或是从右到左的顺序依次获取验证码中的每一个字符,在获取到当前字符后,首先判断当前字符是否为第一个字符,如果是,则获取当前字符的下一个字符,如果否,则估算当前字符与其前一个字符之间的实际距离,假设它们之间的实际距离为第一距离,而需要将两个字符调整为第二距离,此时可计算所述第一距离与所述第二距离之间的差值,按照该差值将两个字符之间的距离调整为第二距离;然后获取下一个字符,按照上述方法继续调整当前字符与前一字符之间的距离,直到完成最后一个字符的距离调整操作,便可执行下面的步骤。方法二 如果验证码字符的个数为奇数,则保持中间的字符位置不变,然后同时或是依次调整中间字符与其相邻的两个字符之间的距离,直到将所有字符之间的距离调整完毕;如果验证码字符的个数为偶数,则首先调整中间两个字符之间的距离,然后分别以中间的两个字符为基准,估算并调整每相邻两字符之间的距离。步骤2A06 :根据用户设定参数中的难易度参数和随机参数中的图片特效处理参数,对字符距离调整后的验证码图像画布作抗破解变换后生成初始验证码图片。所述抗破解变换包括随机扭曲、随机噪点和随机干扰线等操作中的一个或多个。参见图2B所示,图2B是本发明提供的生成初始验证码图片的实施例2的流程图,在实际应用中,在上述步骤2A04之前,本发明实施例还可以包括步骤2B04:根据所述用户设定参数中的难易度参数和所述随机参数中的字符特效处理参数,对所述旋转和/或缩放后的单个字符进行字体特效处理,所述字体特效处理包括随机立体感和/或空心字体处理。图2B中的步骤2B01到2B03与图2A中的步骤2A01到2A03相同,且图2B中的步骤2B05到2B07与图2A中的步骤2A04到2A06相同。在步骤103之前还包括对对从所述背景图库中选取的背景图片进行模糊处理,以避免图像中高频成分对人眼的验证码识别所带来的严重视觉干扰
参见图3所示,图3为本发明对背景图片进行模糊处理的方法的流程示意图,本发明对背景图片进行预先图像模糊处理的步骤如下步骤301 :将第一背景图片划分为N个设定尺寸的区域,所述第一背景图片为未进行模糊处理前的原始图片,N彡1,N为整数。将该背景图片划分为多个区域,每个区域为Ii1Xn2像素大小,典型的,Ii1 = n2 =30,当然Ii1与n2也可以不相等。步骤302 :对所述第一背景图片中的每个区域进行模糊处理,以使每个区域的图像模糊度均大于或等于第一阈值。在处理背景图片中的每个区域时,可同时或依次对每个区域进行模糊处理,也可分批次处理多个区域,但是每个区域的模糊处理过程都是独立的。根据实际情况,可同时处理多个区域,这样可以大大加快模糊处理的速度。另外,在处理每个区域时,可对每个区域进行多次模糊处理,直到每个区域的模糊度均大于或等于所设定的第一阈值为止。 步骤303 :融合第一背景图片中经模糊处理后的每相邻两个区域的边缘,以使第一背景图片的所有区域合成为一个整体图片后得到第二背景图片。采用相邻划分区域像素重叠方法,使每个区域之间有m个像素的重叠,典型的,m=5。区域边缘像素重叠处理,可使每个区域图像间自然平滑的过度,使之成为一个完整的背景图片,即第二背景图片。步骤304 :计算所述第二背景图片的图像模糊度。步骤305 :判断所述第二背景图片的图像模糊度是否大于或等于第二阈值,如果是,则执行步骤306 ;如果否,则对处理后的整体图片重新执行步骤301,即执行将所述第二背景图片划分为N个设定尺寸的区域并对每个区域进行模糊处理的步骤。由于图片模糊处理的最终目的是使待选的背景图片模糊度满足要求,所以还需进一步计算区域合成后的整体图片的图像模糊度,当满足阈值要求时,便可进行下一步的处理,当不满足阈值要求时,需基于处理后的图片再次进行模糊处理,也就是重复循环执行上述所有步骤,直到该图片满足第二阈值的要求为止。步骤306 :对所述第二背景图片进行伽马变换,用以增强所述第二背景图片的色彩。所谓伽马校正就是对图像的伽马特性曲线进行变换,以对图像进行非线性色调变换的方法,检出图像信号中的深色部分和浅色部分,并使两者比例增大或缩小,从而提高图像对比度效果。可以采用以下方法实现本发明对背景图片进行预先图像处理中的步骤302,参见图4所示,图4是步骤302中对第一背景图片中的一个区域进行模糊处理的流程图,具体步骤如下步骤401 :对所述第一背景图片中的一个区域进行高斯模糊处理。斯模糊处理的目的是减小图像噪声以及降低细节层次。步骤402 :计算所述一个区域的图像模糊度。可基于梯度尺度方法(gradient magnitud method)计算图像模糊度。步骤403 :判断所述一个区域的图像模糊度是否大于或等于第一阈值,如果是,则执行步骤404 ;如果否,则再次执行步骤401,用以对模糊处理后的一个区域再次进行高斯模糊处理并计算所述一个区域的图像模糊度,直到所述一个区域的图像模糊度大于或等于所述第一阈值为止。步骤404:模糊处理结束,停止对该区域进行模糊处理,说明该区域的模糊度满足阈值要求。可以采用以下方法实现本发明生成验证码图片的方法中的步骤104,参见图5所示,图5是步骤104的流程图,本发明利用背景图片填充初始验证码图片的步骤如下步骤501 :根据所述随机参数中的区域选取参数随机选取所述背景图片中的第一区域(记为Q)和第二区域(记为P),所述第一区域与所述第二区域的尺寸与所述初始验证码图片的尺寸相同;不巧地,若初始验证码图片的长或/和宽任意一项大于背景图片的长或/和宽,则进入如下两种流程之一I、按数学插值扩放背景图片的尺寸,使得其长和宽均大于初始验证码的长和宽;
2、随机选取背景图片中的某两个区域,再分别按数学插值扩放背景图片的尺寸得到区域Q和P,并使得其尺寸等于初始验证码图片尺寸。对于选取的第一区域和第二区域,这两个区域可位于背景图片上的任何位置,可以是相同位置(实际上同时随机选取同一位置概率极低),或者是不同位置,或者这两个区域部分重叠、部分分开。步骤502 :对所述第一区域进行色彩变换,用以增强所述第一区域Q与所述第二区域P之间的色彩差异度,色彩变换后的第一区域记为Q’ ;具体来讲,上述对所述第一区域进行色彩变换的方法包括如下5项(I)尺度变换基于选定的色彩三维空间,将第一区域Q中的色彩向远离第二区域P色彩的方向作尺度变换,变换公式为IQ, (X,y) = k(IQ(x, y)-IP(x, y))+IP(x, y) ο其中,k为色彩变换的强度系数,IQ(x, y)为第一区域中位置为(X,y)的像素之颜色,IP(x,y)为第二区域中位置为(x,y)的像素之颜色,IQ. (x,y)为新合成的第一区域中位置为(x,y)的像素之颜色,可将所有颜色归一化到O. O I. O的范围内,该范围内的不同数值代表不同颜色。IP(x,y)、IQ(x, y)和Iq .(x,y)可采用以下四种色彩表示方法中的一种代表RGB三通道的颜色矢量,或CIELAB色彩空间的Lab三色彩值矢量,或HSV色彩空间的S(饱和度)、V (色亮度)中的某一标量,或CIELAB色彩空间L (亮度)、C (彩度)中的某一标量。(2) Sigmoid 函数变换采用以下公式对第一区域进行Sigmoid函数变换来增强色彩强度IQ’ (孓.V) = h0 + bxei-hi^+5)(3)幂函数变换采用以下公式对第一区域进行幂函数变换来增强色彩强度IQ, (X, y) = IQr(x, y)(4)色调偏移变换采用以下公式对第一区域进行色调偏移变换来增强色彩强度
权利要求
1.一种生成验证码图片的方法,其特征在于,包括 获取当前验证码参数,所述验证码参数包括用户设定参数和随机参数; 根据所述用户设定参数中的至少一个参数和所述随机参数中的至少一个参数生成初始验证码图片; 根据所述随机参数中的背景图选取参数从预先建立的背景图库中随机选取一幅背景图片; 根据所述随机参数中的区域选取参数从所述背景图片中获取随机选取的区域,并利用所述随机选取的区域填充所述初始验证码图片的字符和背景后,生成最终验证码图片。
2.根据权利要求I所述的方法,其特征在于,所述根据所述用户设定参数中的至少一个参数和所述随机参数中的至少一个参数生成初始验证码图片包括 根据所述随机参数中的字符串长度参数和字符串内容参数,生成属于用户设定参数中字体集参数所对应的字符范围内的验证码字符串; 调用计算机内部字符贴图函数,按所述用户设定参数中的字体参数和字体集参数将所述验证码字符串中的每个字符以设定字体分别贴图到对应的空白字符图像画布中; 根据所述用户设定参数中的难易度参数和所述随机参数中的字符特效处理参数,按照随机设定的旋转角度和缩放倍数对所述字符图像画布中的单个字符进行旋转和/或缩放的处理; 将处理后的所有字符图像画布以所述用户设定参数中的图像质量参数所设定的图像清晰度依次贴图到一个空白的验证码图像画布中; 调整所述验证码图像画布中每相邻两个字符之间的距离; 根据所述用户设定参数中的难易度参数和所述随机参数中的图片特效处理参数,对字符距离调整后的验证码图像画布作抗破解变换后生成初始验证码图片。
3.根据权利要求2所述的方法,其特征在于,所述将处理后的所有字符图像画布以所述用户设定参数中的图像质量参数所设定的图像清晰度依次贴图到一个空白的验证码图像画布中之前还包括 根据所述用户设定参数中的难易度参数和所述随机参数中的字符特效处理参数,对所述旋转和/或缩放后的单个字符进行字体特效处理,所述字体特效处理包括随机立体感和/或空心字体处理。
4.根据权利要求I所述的方法,其特征在于,所述根据所述随机参数中的背景图选取参数从预先建立的背景图库中随机选取一幅背景图片之前还包括对从所述背景图库中选取的背景图片进行模糊处理。
5.根据权利要求4所述的方法,其特征在于,所述对从所述背景图库中选取的背景图片进行模糊处理包括 将第一背景图片划分为N个设定尺寸的区域,所述第一背景图片为未进行模糊处理前的原始图片,N彡1,N为整数; 对所述第一背景图片中的每个区域进行模糊处理,以使每个区域的图像模糊度均大于或等于第一阈值; 融合所述第一背景图片中经模糊处理后的每相邻两个区域的边缘,以使所述第一背景图片的所有区域合成为一个整体图片后得到第二背景图片;计算所述第二背景图片的图像模糊度; 判断所述第二背景图片的图像模糊度是否大于或等于第二阈值,如果是,则对所述第二背景图片进行伽马变换,用以增强所述第二背景图片的色彩,如果否,则执行将所述第二背景图片划分为N个设定尺寸的区域并对每个区域进行模糊处理的步骤。
6.根据权利要求5所述的方法,其特征在于,在对所述第一背景图片中的每个区域进行模糊处理的步骤中,对其中一个区域进行模糊处理具体包括 对所述第一背景图片中的一个区域进行高斯模糊处理后,计算所述一个区域的图像模糊度; 如果所述一个区域的图像模糊度小于所述第一阈值,则对模糊处理后的一个区域再次进行高斯模糊处理,直到所述一个区域的图像模糊度大于或等于所述第一阈值为止。
7.根据权利要求I所述的方法,其特征在于,所述根据所述随机参数中的区域选取参数从所述背景图片中获取随机选取的区域,并利用所述随机选取的区域填充所述初始验证码图片的字符和背景包括 根据所述随机参数中的区域选取参数随机选取所述背景图片中的第一区域和第二区域,所述第一区域与所述第二区域的尺寸与所述初始验证码图片的尺寸相同; 对所述第一区域进行色彩变换,用以增强所述第一区域与所述第二区域之间的色彩差异度; 利用经色彩变换后的第一区域填充所述初始验证码图片中的验证码字符区域,并利用所述第二区域填充所述初始验证码图片的背景区域。
8.根据权利要求I至7任一项所述的方法,其特征在于,所述方法还包括 根据所述用户设定参数中的输出验证码图片尺寸参数,调整所述最终验证码图片为预设尺寸和预设格式后,在预设的显示位置向用户显示所述最终验证码图片。
9.一种生成验证码图片的装置,其特征在于,包括 获取模块,用于获取当前验证码参数,所述验证码参数包括用户设定参数和随机参数; 第一生成模块,用于根据所述用户设定参数中的至少一个参数和所述随机参数中的至少一个参数生成初始验证码图片; 选取模块,用于根据所述随机参数中的背景图选取参数从预先建立的背景图库中随机选取一幅背景图片; 第二生成模块,用于根据所述随机参数中的区域选取参数从所述背景图片中获取随机选取的区域,并利用所述随机选取的区域填充所述初始验证码图片的字符和背景后,生成最终验证码图片。
10.根据权利要求9所述的装置,其特征在于,所述第一生成模块包括 第一生成单元,用于根据所述随机参数中的字符串长度参数和字符串内容参数生成属于用户设定参数中字体集参数所对应的字符范围内的验证码字符串; 字符贴图单元,用于调用计算机内部字符贴图函数,按所述用户设定参数中的字体参数和字体集参数将所述验证码字符串中的每个字符以设定字体分别贴图到对应的空白字符图像画布中; 第一处理单元,用于根据所述用户设定参数中的难易度参数和所述随机参数中的字符特效处理参数,按照随机设定的旋转角度和缩放倍数对所述字符图像画布中的单个字符进行旋转和/或缩放的处理; 整体贴图单元,用于将处理后的所有字符图像画布以所述用户设定参数中的图像质量参数所设定的图像清晰度依次贴图到一个空白的验证码图像画布中; 调整单元,用于调整所述验证码图像画布中每相邻两个字符之间的距离; 第二生成单元,用于根据所述用户设定参数中的难易度参数和所述随机参数中的图 片特效处理参数,对字符距离调整后的验证码图像画布作抗破解变换后生成初始验证码图片。
11.根据权利要求10所述的装置,其特征在于,所述第一生成模块还包括 第二处理单元,用于根据所述用户设定参数中的难易度参数和所述随机参数中的字符特效处理参数,对所述旋转和/或缩放后的单个字符进行字体特效处理,所述字体特效处理包括随机立体感和/或空心字体处理。
12.根据权利要求9所述的装置,其特征在于,所述装置还包括图片处理模块,用于在所述选取模块从预先建立的背景图库中随机选取一幅背景图片之前,对从所述背景图库中选取的背景图片进行模糊处理。
13.根据权利要求12所述的装置,其特征在于,所述图片处理模块包括 区域划分单元,用于将第一背景图片划分为N个设定尺寸的区域,所述第一背景图片为未进行模糊处理前的原始图片,N彡1,N为整数; 区域模糊处理单元,用于对所述第一背景图片中的每个区域进行模糊处理,以使每个区域的图像模糊度均大于或等于第一阈值; 区域融合单元,用于融合所述第一背景图片中经模糊处理后的每相邻两个区域的边缘,以使所述第一背景图片的所有区域合成为一个整体图片后得到第二背景图片; 图片模糊度计算单元,用于计算所述第二背景图片的图像模糊度; 图片阈值判断单元,用于判断所述第二背景图片的图像模糊度是否大于或等于第二阈值; 伽马变换单元,用于在所述图片阈值判断单元判断得到的所述第二背景图片的图像模糊度大于或等于第二阈值时,对所述第二背景图片进行伽马变换,用以增强所述第二背景图片的色彩; 图片重复处理单元,用于在所述图片阈值判断单元判断得到的所述第二背景图的图像模糊度小于所述第二阈值时,继续利用所述区域划分单元执行将所述第二背景图片划分为N个设定尺寸的区域后,对每个区域进行模糊处理的步骤。
14.根据权利要求13所述的装置,其特征在于,所述区域模糊处理单元包括 区域模糊单元,用于对所述第一背景图片中的一个区域进行高斯模糊处理; 区域模糊度计算单元,用于计算所述一个区域的图像模糊度; 区域阈值判断单元,用于判断所述一个区域的图像模糊度是否大于或等于所述第一阈值; 区域重复处理单元,用于在所述区域阈值判断单元判断得到的所述一个区域的图像模糊度小于所述第一阈值时,利用所述区域模糊单元对模糊处理后的一个区域再次进行高斯模糊处理,直到所述一个区域的图像模糊度大于或等于所述第一阈值为止。
15.根据权利要求9所述的装置,其特征在于,所述第二生成模块包括 选取单元,用于根据所述随机参数中的区域选取参数随机选取所述背景图片中的第一区域和第二区域,所述第一区域与所述第二区域的尺寸与所述初始验证码图片的尺寸相同; 色彩变换单元,用于对所述第一区域进行色彩变换,用以增强所述第一区域与所述第二区域之间的色彩差异度; 第一填充单元,用于利用经色彩变换后的第一区域填充所述初始验证码图片中的字符串; 第二填充单元,用于利用所述第二区域填充所述初始验证码图片的背景区域。
16.根据权利要求9所述的装置,其特征在于,所述装置还包括 显示模块,用于根据所述用户设定参数中的输出验证码图片尺寸参数,调整所述最终验证码图片为预设尺寸和预设格式后,在预设的显示位置向用户显示所述最终验证码图片。
全文摘要
本发明公开了一种生成验证码图片的方法,包括获取当前验证码参数,所述验证码参数包括用户设定参数和随机参数;根据所述用户设定参数中的至少一个参数和所述随机参数中的至少一个参数生成初始验证码图片;根据所述随机参数中的背景图选取参数从预先建立的背景图库中随机选取一幅背景图片;根据所述随机参数中的区域选取参数从所述背景图片中获取随机选取的区域,并利用所述随机选取的区域填充所述初始验证码图片的字符和背景后,生成最终验证码图片。本发明还公开了一种生成验证码图片的装置。
文档编号G06T1/00GK102831568SQ20121027574
公开日2012年12月19日 申请日期2012年8月3日 优先权日2012年8月3日
发明者傅凌进, 潘照明, 周森, 汪源, 陈刚 申请人:网易(杭州)网络有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1