著录项信息
专利名称 | 一种图片验证码的实现方法和装置 |
申请号 | CN201210276541.8 | 申请日期 | 2012-08-03 |
法律状态 | 暂无 | 申报国家 | 中国 |
公开/公告日 | 2012-11-07 | 公开/公告号 | CN102768754A |
优先权 | 暂无 | 优先权号 | 暂无 |
主分类号 | G06T1/00 | IPC分类号 | G;0;6;T;1;/;0;0;;;G;0;6;T;1;1;/;0;0;;;H;0;4;L;2;9;/;0;6查看分类表>
|
申请人 | 网易(杭州)网络有限公司 | 申请人地址 | 浙江省杭州市滨江区长河街道网商路399号3幢408室
变更
专利地址、主体等相关变化,请及时变更,防止失效 |
权利人 | 杭州网易智企科技有限公司 | 当前权利人 | 杭州网易智企科技有限公司 |
发明人 | 傅凌进;潘照明;周森;汪源;陈刚 |
代理机构 | 北京集佳知识产权代理有限公司 | 代理人 | 王宝筠 |
摘要
本发明公开了一种图片验证码的实现方法,包括:获取当前验证码参数,所述验证码参数包括用户设定参数和随机参数;根据随机参数确定验证码字符串的长度和内容,并根据用户设定参数中的字体库路径参数从指定字体库中获取验证码字符串中每个字符对应形状数字矩阵;将每个形状数字矩阵转化为对应字体形状的字符图像,并根据验证码参数中部分参数对所有字符图像进行字符特效处理后生成初始验证码图片;利用随机选取的背景色填充初始验证码图片的背景;根据用户设定参数中的难易度参数和随机参数中的图片特效处理参数对背景填充后的初始验证码图片进行防破解处理后进行色彩变换处理,以生成最终验证码图片。本发明还公开了一种图片验证码的实现装置。
1.一种图片验证码的实现方法,其特征在于,包括:
获取当前验证码参数,所述验证码参数包括用户设定参数和随机参数;
根据所述随机参数中的字符长度参数和字符内容参数确定验证码字符串,并根据所述用户设定参数中的字体库路径参数从指定字体库中获取所述验证码字符串中每个字符对应形状数字矩阵;
将每个形状数字矩阵转化为对应字体形状的字符图像,并根据所述用户设定参数中的至少一个参数和所述随机参数中的至少一个参数对所有字符图像进行包括字体形状、字符颜色和字符间距调整的处理后,以生成初始验证码图片;
根据所述随机参数中的背景色选取参数随机获取背景色,并利用所述背景色填充所述初始验证码图片的背景;
根据所述用户设定参数中的难易度参数和所述随机参数中的图片特效处理参数对背景填充后的初始验证码图片进行防破解处理后,对处理后的初始验证码图片进行色彩变换处理,以生成最终验证码图片;
其中,所述根据所述用户设定参数中的难易度参数和所述随机参数中的图片特效处理参数对背景填充后的初始验证码图片进行防破解处理后,并对处理后的初始验证码图片进行色彩变换处理,以生成最终验证码图片包括:
根据所述用户设定参数中的难易度参数和所述随机参数中的图片特效处理参数,在所述初始验证码图片中加入随机噪点和/或随机干扰线后得到第一验证码图片;拷贝所述第一验证码图片以得到拷贝图片,所述拷贝图片为第二验证码图片;依次对所述第二验证码图片作图像形态学膨胀变换、图像高斯模糊变换和图像伽马校正的处理;将处理后的第二验证码图片与所述第一验证码图片进行像素融合;对像素融合后的验证码图片进行空间色彩的变换后生成最终验证码图片;
或,拷贝所述初始验证码图片以得到拷贝图片,所述拷贝图片为第三验证码图片;根据所述用户设定参数中的难易度参数和所述随机参数中的图片特效处理参数,在所述第三验证码图片中加入随机噪点和/或随机干扰线后得到第四验证码图片;依次对所述第四验证码图片作图像形态学膨胀变换、图像高斯模糊变换和图像伽马校正的处理;将处理后的第四验证码图片与所述初始验证码图片进行像素融合;对像素融合后的验证码图片进行空间色彩的变换后生成最终验证码图片;
其中,所述对像素融合后的验证码图片进行空间色彩的变换包括:
选取与原前景色同色调角且不同彩度和明度的颜色作为次前景色,所述原前景色为所述像素融合后的验证码图片中的字符颜色;利用公式I新 = f1(x,y)·I原+ f
2(x,y)·I次,从设定方向上进行所述原前景色与所述次前景色的色彩线性合成,其中,I原为坐标(x,y)处的原前景色的色彩向量,I次为坐标(x,y)处的次前景色的色彩向量,I新为坐标(x,y)处的色彩合成后的色彩向量,f1(x,y)和f2(x,y)是与空间位置相关的变换函数。
2.根据权利要求1所述的方法,其特征在于,所述根据所述用户设定参数中的字体库路径参数从指定字体库中获取所述验证码字符串中每个字符对应形状数字矩阵包括:
根据所述用户设定参数中的字体库路径参数从预先设定的随机控制参数中随机选取一个参数,所述一个参数对应指定字体库中的一个设定字体文件;
从所述设定字体文件中获取描述当前字符字体形状的数字矩阵。
3.根据权利要求1所述的方法,其特征在于,所述将每个形状数字矩阵转化为对应字体形状的字符图像,并根据所述用户设定参数中的至少一个参数和所述随机参数中的至少一个参数对所有字符图像进行包括字体形状、字符颜色和字符间距调整的处理后,以生成初始验证码图片包括:
将每个形状数字矩阵分别贴图到对应的空白的字符图像画布中,并将每个形状数字矩阵转化为对应字体形状的字符以生成字符图像;
根据所述用户设定参数中的难易度参数和所述随机参数中的字符特效处理参数,按照随机设定的旋转角度和缩放倍数旋转和/或缩放所述字符图像中的单个字符,并对所述旋转和/或缩放后的单个字符进行字体特效处理,所述字体特效处理包括随机立体感和/或空心字体处理;
将处理后的所有字符图像以所述用户设定参数中的图像质量参数所设定的图像清晰度依次贴贴图到一个空白的验证码图像画布中;
调整所述验证码图像画布中每相邻两个字符之间的距离;
根据所述随机参数中的字符色选取参数随机获取颜色,并利用随机获取的颜色为距离调整后的字符着色后生成初始验证码图片。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
根据所述用户设定参数中的输出验证码图片尺寸参数,调整所述最终验证码图片为预设尺寸和预设格式后,在预设的显示位置向用户显示所述最终验证码图片。
5.一种图片验证码的实现装置,其特征在于,包括:
第一获取单元,用于获取当前验证码参数,所述验证码参数包括用户设定参数和随机参数;
第二获取单元,用于根据所述随机参数中的字符长度参数和字符内容参数确定验证码字符串,并根据所述用户设定参数中的字体库路径参数从指定字体库中获取所述验证码字符串中每个字符对应形状数字矩阵;
第一生成单元,用于将每个形状数字矩阵转化为对应字体形状的字符图像,并根据所述用户设定参数中的至少一个参数和所述随机参数中的至少一个参数对所有字符图像进行包括字体形状、字符颜色和字符间距调整的处理后,以生成初始验证码图片;
背景填充单元,用于根据所述随机参数中的背景色选取参数随机获取背景色,并利用所述背景色填充所述初始验证码图片的背景;
第二生成单元,用于根据所述用户设定参数中的难易度参数和所述随机参数中的图片特效处理参数对背景填充后的初始验证码图片进行防破解处理后,对处理后的初始验证码图片进行色彩变换处理,以生成最终验证码图片;
其中,所述第二生成单元包括:
第一添加单元,用于根据所述用户设定参数中的难易度参数和所述随机参数中的图片特效处理参数,在所述初始验证码图片中加入随机噪点和/或随机干扰线后得到第一验证码图片;
第一拷贝单元,用于拷贝所述第一验证码图片以得到拷贝图片,所述拷贝图片为第二验证码图片;
第一图片处理单元,用于依次对所述第二验证码图片作图像形态学膨胀变换、图像高斯模糊变换和图像伽马校正的处理;
第一融合单元,用于将处理后的第二验证码图片与所述第一验证码图片进行像素融合;
色彩变换单元,用于对像素融合后的验证码图片进行空间色彩的变换后生成最终验证码图片;
或,
第二拷贝单元,用于拷贝所述初始验证码图片以得到拷贝图片,所述拷贝图片为第三验证码图片;
第二添加单元,用于根据所述用户设定参数中的难易度参数和所述随机参数中的图片特效处理参数,在所述第三验证码图片中加入随机噪点和/或随机干扰线后得到第四验证码图片;
第二图片处理单元,用于依次对所述第四验证码图片作图像形态学膨胀变换、图像高斯模糊变换和图像伽马校正的处理;
第二融合单元,用于将处理后的第四验证码图片与所述初始验证码图片进行像素融合;
色彩变换单元,还用于对像素融合后的验证码图片进行空间色彩的变换后生成最终验证码图片;
其中,所述色彩变换单元包括:
选取单元,用于选取与原前景色同色调角且不同彩度和明度的颜色作为次前景色,所述原前景色为所述像素融合后的验证码图片中的字符颜色;
色彩合成单元,用于利用公式I新= f1(x,y)·I原+ f2(x,y)·I次,从设定方向上进行所述原前景色与所述次前景色的色彩线性合成,其中,I原为坐标(x,y)处的原前景色的色彩向量,I次为坐标(x,y)处的次前景色的色彩向量,I新为坐标(x,y)处的色彩合成后的色彩向量,f1(x,y)和f2(x,y)是与空间位置相关的变换函数。
6.根据权利要求5所述的装置,其特征在于,所述第二获取单元包括:
参数选取单元,用于根据所述用户设定参数中的字体库路径参数从预先设定的随机控制参数中随机选取一个参数,所述一个参数对应指定字体库中的一个设定字体文件;
数字矩阵取出单元,用于从所述设定字体文件中获取描述当前字符字体形状的数字矩阵。
7.根据权利要求5所述的装置,其特征在于,所述第一生成单元包括:
转化单元,用于将每个形状数字矩阵分别贴图到对应的空白的字符图像画布中,并将每个形状数字矩阵转化为对应字体形状的字符以生成字符图像;
处理单元,用于根据所述用户设定参数中的难易度参数和所述随机参数中的字符特效处理参数,按照随机设定的旋转角度和缩放倍数旋转和/或缩放所述字符图像中的单个字符,并对所述旋转和/或缩放后的单个字符进行字体特效处理,所述字体特效处理包括随机立体感和/或空心字体处理;
贴图单元,用于将处理后的所有字符图像以所述用户设定参数中的图像质量参数所设定的图像清晰度依次贴贴图到一个空白的验证码图像画布中;
距离调整单元,用于调整所述验证码图像画布中每相邻两个字符之间的距离;
着色单元,用于根据所述随机参数中的字符色选取参数随机获取颜色,并利用随机获取的颜色为距离调整后的字符着色后生成初始验证码图片。
8.根据权利要求5至7任一项所述的装置,其特征在于,所述装置还包括:
显示单元,用于根据所述用户设定参数中的输出验证码图片尺寸参数,调整所述最终验证码图片为预设尺寸和预设格式后,在预设的显示位置向用户显示所述最终验证码图片。
一种图片验证码的实现方法和装置\n技术领域\n[0001] 本发明涉及互联网安全技术领域,尤其涉及一种图片验证码的实现方法和装置。\n背景技术\n[0002] 随着互联网应用的日益普及,其市场地位越来越重要,一些人试图在互联网服务这个开放式平台中制作或使用“注册机”软件,用于自动填写网络上的各种登陆表单,从而达到发送大量垃圾信息的目的。在互联网技术领域,通常使用一种能区分某一个请求背后的用户是计算机还是人的公共全自动程序来避免“注册机”带来的安全隐患,这类模块称为验证码,常见于图像的形式。\n[0003] 目前验证码图片的应用比较普遍,对于生成的一张验证码图片,电脑前的用户通过目测可以比较容易的得到需要获取的答案,如:图片上的文字是什么,然后填写答案提交给提供验证码的服务器,服务器通过后台验证来确定是否输入正确,若正确则进入下一环节,这样可以在一定程度上干扰“注册机”软件程序的进度使之识别率降低,从而在一定程度上防止了“注册机”软件对互联网服务的攻击。目前验证码类型众多,包括:输入数字、字母或中文的方式,靠移动鼠标完成简单的任务的方式,或解答一些简单逻辑问题的方式等等。\n[0004] 但是在现有技术中,在同一网站的不同页面中一般只能生成同一风格甚至是同一字体的验证码,但是,不同网页对验证码的难度需求却不尽相同,现有技术未针对不同网站提供一套通用的生成验证码图片的方法,用以为不同网站的不同网页生成包括不同难易程度的验证码的验证码图片,因此不适合互联网当前的发展需求。\n发明内容\n[0005] 有鉴于此,本发明的主要目的在于提供一种图片验证码的生成方法和装置,实现了为网站中的不同网页提供不同难易程度的验证码图片的目的。\n[0006] 为实现上述目的,本发明提出的一种图片验证码的实现方法,包括:\n[0007] 获取当前验证码参数,所述验证码参数包括用户设定参数和随机参数;\n[0008] 根据所述随机参数中的字符长度参数和字符内容参数确定验证码字符串,并根据所述用户设定参数中的字体库路径参数从指定字体库中获取所述验证码字符串中每个字符对应形状数字矩阵;\n[0009] 将每个形状数字矩阵转化为对应字体形状的字符图像,并根据所述用户设定参数中的至少一个参数和所述随机参数中的至少一个参数对所有字符图像进行包括字体形状、字符颜色和字符间距调整的处理后,以生成初始验证码图片;\n[0010] 根据所述随机参数中的背景色选取参数随机获取背景色,并利用所述背景色填充所述初始验证码图片的背景;\n[0011] 根据所述用户设定参数中的难易度参数和所述随机参数中的图片特效处理参数对背景填充后的初始验证码图片进行防破解处理后,对处理后的初始验证码图片进行色彩变换处理,以生成最终验证码图片。\n[0012] 优选的,在上述方法中,所述根据所述用户设定参数中的字体库路径参数从指定字体库中获取所述验证码字符串中每个字符对应形状数字矩阵包括:\n[0013] 根据所述用户设定参数中的字体库路径参数从预先设定的随机控制参数中随机选取一个参数,所述一个参数对应指定字体库中的一个设定字体文件;\n[0014] 从所述设定字体文件中获取描述当前字符字体形状的数字矩阵。\n[0015] 优选的,在上述方法中,所述将每个形状数字矩阵转化为对应字体形状的字符图像,并根据所述用户设定参数中的至少一个参数和所述随机参数中的至少一个参数对所有字符图像进行包括字体形状、字符颜色和字符间距调整的处理后,以生成初始验证码图片包括:\n[0016] 将每个形状数字矩阵分别贴图到对应的空白的字符图像画布中,并将每个形状数字矩阵转化为对应字体形状的字符以生成字符图像;\n[0017] 根据所述用户设定参数中的难易度参数和所述随机参数中的字符特效处理参数,按照随机设定的旋转角度和缩放倍数旋转和/或缩放所述字符图像中的单个字符,并对所述旋转和/或缩放后的单个字符进行字体特效处理,所述字体特效处理包括随机立体感和/或空心字体处理;\n[0018] 将处理后的所有字符图像以所述用户设定参数中的图像质量参数所设定的图像清晰度依次贴贴图到一个空白的验证码图像画布中;\n[0019] 调整所述验证码图像画布中每相邻两个字符之间的距离;\n[0020] 根据所述随机参数中的字符色选取参数随机获取颜色,并利用随机获取的颜色为距离调整后的字符着色后生成初始验证码图片。\n[0021] 优选的,在上述方法中,所述根据所述用户设定参数中的难易度参数和所述随机参数中的图片特效处理参数对背景填充后的初始验证码图片进行防破解处理后,并对处理后的初始验证码图片进行色彩变换处理,以生成最终验证码图片包括:\n[0022] 根据所述用户设定参数中的难易度参数和所述随机参数中的图片特效处理参数,在所述初始验证码图片中加入随机噪点和/或随机干扰线后得到第一验证码图片;\n[0023] 拷贝所述第一验证码图片以得到拷贝图片,所述拷贝图片为第二验证码图片;\n[0024] 依次对所述第二验证码图片作图像形态学膨胀变换、图像高斯模糊变换和图像伽马校正的处理;\n[0025] 将处理后的第二验证码图片与所述第一验证码图片进行像素融合;\n[0026] 对像素融合后的验证码图片进行空间色彩的变换后生成最终验证码图片。\n[0027] 优选的,在上述方法中,所述根据所述用户设定参数中的难易度参数和所述随机参数中的图片特效处理参数对背景填充后的初始验证码图片进行防破解处理后,并对处理后的初始验证码图片进行色彩变换处理,以生成最终验证码图片包括:\n[0028] 拷贝所述初始验证码图片以得到拷贝图片,所述拷贝图片为第三验证码图片;\n[0029] 根据所述用户设定参数中的难易度参数和所述随机参数中的图片特效处理参数,在所述第三验证码图片中加入随机噪点和/或随机干扰线后得到第四验证码图片;\n[0030] 依次对所述第四验证码图片作图像形态学膨胀变换、图像高斯模糊变换和图像伽马校正的处理;\n[0031] 将处理后的第四验证码图片与所述初始验证码图片进行像素融合;\n[0032] 对像素融合后的验证码图片进行空间色彩的变换后生成最终验证码图片。\n[0033] 优选的,在上述方法中,所述对像素融合后的验证码图片进行空间色彩的变换后生成最终验证码图片包括:\n[0034] 选取与原前景色同色调角且不同彩度和明度的颜色作为次前景色,所述原前景色为所述像素融合后的验证码图片中的字符颜色;\n[0035] 利用公式I新=f1(x,y)·I原+f2(x,y)·I次,从设定方向上进行所述原前景色与所述次前景色的色彩线性合成,其中,I原为坐标(x,y)处的原前景色的色彩向量,I次为坐标(x,y)处的次前景色的色彩向量,I新为坐标(x,y)处的色彩合成后的色彩向量,f1(x,y)和f2(x,y)是与空间位置相关的变换函数。\n[0036] 优选的,上述方法还包括:\n[0037] 根据所述用户设定参数中的输出验证码图片尺寸参数,调整所述最终验证码图片为预设尺寸和预设格式后,在预设的显示位置向用户显示所述最终验证码图片。\n[0038] 本发明提供的一种图片验证码的实现装置,其特征在于,包括:\n[0039] 第一获取单元,用于获取当前验证码参数,所述验证码参数包括用户设定参数和随机参数;\n[0040] 第二获取单元,用于根据所述随机参数中的字符长度参数和字符内容参数确定验证码字符串,并根据所述用户设定参数中的字体库路径参数从指定字体库中获取所述验证码字符串中每个字符对应形状数字矩阵;\n[0041] 第一生成单元,用于将每个形状数字矩阵转化为对应字体形状的字符图像,并根据所述用户设定参数中的至少一个参数和所述随机参数中的至少一个参数对所有字符图像进行包括字体形状、字符颜色和字符间距调整的处理后,以生成初始验证码图片;\n[0042] 背景填充单元,用于根据所述随机参数中的背景色选取参数随机获取背景色,并利用所述背景色填充所述初始验证码图片的背景;\n[0043] 第二生成单元,用于根据所述用户设定参数中的难易度参数和所述随机参数中的图片特效处理参数对背景填充后的初始验证码图片进行防破解处理后,对处理后的初始验证码图片进行色彩变换处理,以生成最终验证码图片。\n[0044] 优选的,在上述装置中,所述第二获取单元包括:\n[0045] 参数选取单元,用于根据所述用户设定参数中的字体库路径参数从预先设定的随机控制参数中随机选取一个参数,所述一个参数对应指定字体库中的一个设定字体文件;\n[0046] 数字矩阵取出单元,用于从所述设定字体文件中获取描述当前字符字体形状的数字矩阵。\n[0047] 优选的,在上述装置中,所述第一生成单元包括:\n[0048] 转化单元,用于将每个形状数字矩阵分别贴图到对应的空白的字符图像画布中,并将每个形状数字矩阵转化为对应字体形状的字符以生成字符图像;\n[0049] 处理单元,用于根据所述用户设定参数中的难易度参数和所述随机参数中的字符特效处理参数,按照随机设定的旋转角度和缩放倍数旋转和/或缩放所述字符图像中的单个字符,并对所述旋转和/或缩放后的单个字符进行字体特效处理,所述字体特效处理包括随机立体感和/或空心字体处理;\n[0050] 贴图单元,用于将处理后的所有字符图像以所述用户设定参数中的图像质量参数所设定的图像清晰度依次贴贴图到一个空白的验证码图像画布中;\n[0051] 距离调整单元,用于调整所述验证码图像画布中每相邻两个字符之间的距离;\n[0052] 着色单元,用于根据所述随机参数中的字符色选取参数随机获取颜色,并利用随机获取的颜色为距离调整后的字符着色后生成初始验证码图片。\n[0053] 优选的,在上述装置中,所述第二生成单元包括:\n[0054] 第一添加单元,用于根据所述用户设定参数中的难易度参数和所述随机参数中的图片特效处理参数,在所述初始验证码图片中加入随机噪点和/或随机干扰线后得到第一验证码图片;\n[0055] 第一拷贝单元,用于拷贝所述第一验证码图片以得到拷贝图片,所述拷贝图片为第二验证码图片;\n[0056] 第一图片处理单元,用于依次对所述第二验证码图片作图像形态学膨胀变换、图像高斯模糊变换和图像伽马校正的处理;\n[0057] 第一融合单元,用于将处理后的第二验证码图片与所述第一验证码图片进行像素融合;\n[0058] 色彩变换单元,用于对像素融合后的验证码图片进行空间色彩的变换后生成最终验证码图片。\n[0059] 和,\n[0060] 第二拷贝单元,用于拷贝所述初始验证码图片以得到拷贝图片,所述拷贝图片为第三验证码图片;\n[0061] 第二添加单元,用于根据所述用户设定参数中的难易度参数和所述随机参数中的图片特效处理参数,在所述第三验证码图片中加入随机噪点和/或随机干扰线后得到第四验证码图片;\n[0062] 第二图片处理单元,用于依次对所述第四验证码图片作图像形态学膨胀变换、图像高斯模糊变换和图像伽马校正的处理;\n[0063] 第二融合单元,用于将处理后的第四验证码图片与所述初始验证码图片进行像素融合;\n[0064] 所述色彩变换单元,还用于对像素融合后的验证码图片进行空间色彩的变换后生成最终验证码图片。\n[0065] 优选的,在上述装置中,所述色彩变换单元包括:\n[0066] 选取单元,用于选取与原前景色同色调角且不同彩度和明度的颜色作为次前景色,所述原前景色为所述像素融合后的验证码图片中的字符颜色;\n[0067] 色彩合成单元,用于利用公式I新=f1(x,y)·I原+f2(x,y)·I次,从设定方向上进行所述原前景色与所述次前景色的色彩线性合成,其中,I原为坐标(x,y)处的原前景色的色彩向量,I次为坐标(x,y)处的次前景色的色彩向量,I新为坐标(x,y)处的色彩合成后的色彩向量,f1(x,y)和f2(x,y)是与空间位置相关的变换函数。\n[0068] 优选的,上述装置还包括:显示单元,用于根据所述用户设定参数中的输出验证码图片尺寸参数,调整所述最终验证码图片为预设尺寸和预设格式后,在预设的显示位置向用户显示所述最终验证码图片。\n[0069] 可见,本发明图片验证码的生成方法和装置,通过获取当前验证码参数;根据验证码参数确定验证码内容,并从指定字体库中获取验证码内容中每个字符对应的形状数字矩阵;将每个形状数字矩阵转化为对应字体形状的字符图像,并对所有字符图像进行包括字体形状、字符颜色和字符间距调整的处理后,以生成初始验证码图片;利用随机选取的背景色填充所述初始验证码图片的背景;对背景填充后的初始验证码图片进行防破解处理和字符色彩变换处理,以生成最终验证码图片。验证码参数包括用户设定参数和随机参数,可利用开放的用户设定参数使得程序开发人员可以不定期调整参数以求验证码图片的多样性,同时内置的随机各种参数有利于验证码多样化的实现,使得验证码图片更加难以破解,可有效防止页面被恶意攻击,提高了网络页面的安全性;由于能生成不同识别难度的验证码和考虑了良好的用户视觉体验,可满足不同系统开发的要求。\n附图说明\n[0070] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。\n[0071] 图1是本发明图片验证码的实现方法的实施例1的流程示意图;\n[0072] 图2是本发明在指定字体库中获取字符形状数字矩阵的示意图;\n[0073] 图3是本发明生成初始验证码图片的方法的流程示意图;\n[0074] 图4A是本发明生成最终验证码图片的方法的实施例1的流程示意图;\n[0075] 图4B是本发明生成最终验证码图片的方法的实施例2的流程示意图;\n[0076] 图5是本发明图片验证码的实现方法实施例2的流程示意图;\n[0077] 图6是本发明图片验证码的实现装置的实施例1的结构示意图;\n[0078] 图7是本发明图片验证码的实现装置的实施例1中第二获取单元的结构示意图;\n[0079] 图8是本发明图片验证码的实现装置的实施例1中第一生成单元的结构示意图;\n[0080] 图9是本发明图片验证码的实现装置的实施例1中第二生成单元的结构示意图;\n[0081] 图10是本发明图片验证码的实现装置的实施例2的结构示意图;\n[0082] 图11是本发明根据不同用户设定参数所生成的不同图片示例。\n具体实施方式\n[0083] 为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。\n[0084] 参见图1所示,图1是本发明提供的图片验证码的实现方法实施例1的流程图,本实施例的图片验证码的实现方法的步骤如下:\n[0085] 步骤101:获取当前验证码参数,所述验证码参数包括用户设定参数和随机参数。\n[0086] 本实施例中,上述验证码参数包括用户设定参数和随机参数,可通过用户交互接口获取用户设定参数,通过调用内置随机发生器获取随机参数,程序开发人员可通过人机交互界面更改用户设定参数,而随机参数是由计算机系统内部随机生成的。\n[0087] 其中,所述用户设定参数至少包括以下五项中的一项:\n[0088] 1)字体库路径参数\n[0089] 指定字库中含有n种字体文件,其中n≥1,每个字体文件均支持需要显示的字符字体,本发明对于每个验证码内容的字符可随机从该n个文件中选取一个文件作为该字符对应的字体文件。\n[0090] 2)难易度参数\n[0091] 可通过设置验证码难易度参数的范围来定义验证码的识别难度,例如,设置验证码难易度参数的取值范围为(A,B),例如:(-1.0,1.0),其中,参数取值越大,验证码识别难度越低,参数取值越小,验证码识别难度越高;当然,也可采用相反的设置,即参数取值越大,验证码难度越高,参数取值越小,验证码难度越低。\n[0092] 3)验证码长度范围设置参数\n[0093] 一般情况下,图片验证码中将包含多个字符,所以程序开发人员可以通过用户交互接口输入N和M两个参数,其中,0<N≤M,也就是说,程序开发人员可以根据具体的需要指定一个验证码字符长度的区间,而在具体生成验证码时,系统会在所述区间中任意选取一个整数作为验证码字符的长度。长度选取的过程可以是随机的,也就是说,每一次生成的验证码字符长度是不一样的,这样可以提升验证码的抗暴力破解性能;也可以让程序开发人员输入固定字符长度(设置N=M),这样,对于同一页面每一次生成的验证码字符的长度是固定的不变的。\n[0094] 4)输出验证码图片尺寸参数\n[0095] 用于设置最终验证码图片的输出尺寸,目的是使验证码图片最终以一定的宽度和高度显示在某网页的设定位置,图片的宽和高的单位为像素。\n[0096] 5)图像质量参数\n[0097] 可设置验证码图片质量参数的取值范围为(C,D),例如:(0,1),本发明默认参数取值越大,图像细节越清晰,参数取值越小,图片细节越模糊;当然,也可采用相反的设置,即参数取值越小,图像细节越清晰,参数取值越大,图片细节越模糊。\n[0098] 其中,所述随机参数至少包括以下四项:\n[0099] 1)字符长度参数\n[0100] 在上述用户设定参数中的验证码长度范围设置参数中,可在包括N和M在内的设定范围内随机选取一个整数作为验证码字符的长度。\n[0101] 2)字符内容参数\n[0102] 随机验证码内容也就是当前实施例的验证码字符串。\n[0103] 3)验证码字符串中每个字符所对应字体\n[0104] 4)背景色选取参数和字符色选取参数\n[0105] 验证码图片的背景色和字符前景色的生成可以是随机的,也就是说,每一次生成验证码图片时,其背景色和字符前景色相对上次生成可以不同,从而提高了验证码图片的防破解能力。图片的背景色可为RGB三通道均大于230的高明度中性色,而前景色即字符色为低明度中性色或者中、高彩度的低、中、高明度彩色,保持基于国际标准显示三原色的sRGB转换为的均匀色空间CIELAB中色差ΔE>10(人眼足够辨别,经典地,ΔE>50能清晰辨别),使得验证码图片具有足够的色彩对比度,从而便于人眼识别。\n[0106] 5)字符特效处理参数和图片特效处理参数\n[0107] 验证码图片中每个字符的特效和图像处理过程的特效,特效可以包括空心字效果、干扰噪声,干扰线等。\n[0108] 步骤102:根据随机参数中的字符长度参数和字符内容参数确定验证码字符串,并根据用户设定参数中的字体库路径参数从指定字体库中获取所述验证码字符串中每个字符对应形状数字矩阵。\n[0109] 字体库路径是通过用户设定参数中的字体库路径参数而获取,若本发明实施例中的字体库里有n种字体文件(n≥1),且每个字体文件均支持需要显示的字符字体,对于验证码内容中的每个字符可随机从该n个文件中选取一个文件作为该字符对应的字体文件,并从该字体文件中取出该字符的形状数字矩阵。\n[0110] 对于验证码中的每个字符,可按照下述方法获取所述验证码内容中的一个字符的形状数字矩阵:根据用户设定参数中的字体库路径参数从预先设定的随机控制参数中随机选取一个参数,所述一个参数对应指定字体库中的一个设定字体文件;从所述设定字体文件中获取描述当前字符字体形状的数字矩阵。\n[0111] 参见图2所示,图2是本发明在指定字体库中获取字符形状数字矩阵的示意图,假定需要生成的验证码为4A…(省略号表示其他字符,如该验证码可能为4A123或者\n4Aabcdef等类似以4A起始的验证码字符串),这里取前两位来说明获取形状数字矩阵的过程:依次对验证码字符串进行字库的查找,首先针对字符“4”,通过获取随机控制参数中0到n间(不含n)的一个参数(假定为1),在字体库中获取该参数1对应的字体文件1.ttf,将字符“4”的数字矩阵从字体文件1.ttf中取出(这里假设字符“4”的数字矩阵为6×12的尺寸,实际上与当前的条件有关,特别是和初始设定的验证码图片品质参数有关);取出第一个字符“4”的数字矩阵后,再取第二个字符“A”的数字矩阵,以此类推,最后得到每个验证码字符的数字矩阵;当然,除了依次获取每个验证码字符的数字矩阵外,还可同时获取每个字符对应的数字矩阵,从而在一定程度上增加了生成验证码的速度。\n[0112] 步骤103:将每个形状数字矩阵转化为对应字体形状的字符图像,并根据用户设定参数中的至少一个参数和随机参数中的至少一个参数对所有字符图像进行包括字体形状、字符颜色和字符间距调整的处理后,以生成初始验证码图片。\n[0113] 可以采用以下方法实现本发明图片验证码的生成方法中的步骤103,参见图3所示,图3是步骤103的流程图,实现本发明方法实施例中生成初始验证码图片的步骤如下:\n[0114] 步骤301:将每个形状数字矩阵分别贴图到对应的空白的字符图像画布中,并将每个形状数字矩阵转化为对应字体形状的字符以生成字符图像;\n[0115] 也就是说,对每个字符进行数字矩阵的图像化,即将字符的数字矩阵转为图像并存储。\n[0116] 步骤302:根据用户设定参数中的难易度参数和随机参数中的字符特效处理参数,按照随机设定的旋转角度和缩放倍数旋转和/或缩放所述字符图像中的单个字符。\n[0117] 为适应不同场合的需求,可根据难易度参数的大小,对所述字符图像中的单个字符进行旋转缩放处理,对于每个字符可选择以下任一项进行处理:旋转所述单个字符;放大或缩小所述单个字符;旋转并放大所述单个字符;旋转或缩小所述单个字符。\n[0118] 此外,验证码参数中随机参数决定了每个验证码字符的旋转角度、字符缩放尺寸等内容;且针对不同的验证码难易度,本发明包括但不限于旋转和缩放等操作内容。\n[0119] 步骤303:根据用户设定参数中的难易度参数和随机参数中的字符特效处理参数,对旋转和/或缩放后的单个字符进行字体特效处理,所述字体特效处理包括随机立体感和/或空心字体处理。\n[0120] 本实施例中,根据所述难度参数和随机参数对单个字符图像画布进行字符特效处理,包括但不限于随机立体感、空心字体等字体效果的操作。\n[0121] 步骤304:将处理后的所有字符图像以所述用户设定参数中的图像质量参数所设定的图像清晰度依次贴贴图到一个空白的验证码图像画布中。\n[0122] 步骤305:调整所述验证码图像画布中每相邻两个字符之间的距离。\n[0123] 本发明调整字符间距的方法包括但不限于以下两种:\n[0124] 方法一:按照从左到右或是从右到左的顺序依次获取验证码中的每一个字符,在获取到当前字符后,首先判断当前字符是否为第一个字符,如果是,则获取当前字符的下一个字符,如果否,则估算当前字符与其前一个字符之间的实际距离,假设它们之间的实际距离为第一距离,而需要将两个字符调整为第二距离,此时可计算所述第一距离与所述第二距离之间的差值,按照该差值将两个字符之间的距离调整为第二距离;然后获取下一个字符,按照上述方法继续调整当前字符与前一字符之间的距离,直到完成最后一个字符的距离调整操作,便可执行下面的步骤。\n[0125] 方法二:如果验证码字符的个数为奇数,则保持中间的字符位置不变,然后同时或是依次调整中间字符与其相邻的两个字符之间的距离,直到将所有字符之间的距离调整完毕;如果验证码字符的个数为偶数,则首先调整中间两个字符之间的距离,然后分别以中间的两个字符为基准,估算并调整每相邻两字符之间的距离。\n[0126] 步骤306:根据所述随机参数中的字符色选取参数随机获取颜色,并利用随机获取的颜色为距离调整后的字符着色后生成初始验证码图片。\n[0127] 步骤104:根据随机参数中的背景色选取参数随机获取背景色,并利用所述背景色填充所述初始验证码图片的背景。\n[0128] RGB色彩模式使用RGB模型为图像中每一个像素的RGB分量分配一个0到255范围内的强度值。本实施例随机选取范围在(N,255)内的某个值作为背景色,下限N通常选择大于200,保证背景色为浅色。\n[0129] 步骤105:根据用户设定参数中的难易度参数和随机参数中的图片特效处理参数对背景填充后的初始验证码图片进行防破解处理后,对处理后的初始验证码图片进行色彩变换处理,以生成最终验证码图片。\n[0130] 可以采用以下两种方法实现本发明图片验证码的生成方法中的步骤105,参见图\n4A和图4B所示。\n[0131] 图4A是步骤105的实施例1的流程图,实现本发明生成最终验证码图片的步骤如下:\n[0132] 步骤4A01:根据用户设定参数中的难易度参数和随机参数中的图片特效处理参数,在初始验证码图片中加入随机噪点和/或随机干扰线后得到第一验证码图片。\n[0133] 步骤4A02:拷贝所述第一验证码图片以得到拷贝图片,所述拷贝图片为第二验证码图片。\n[0134] 步骤4A03:依次对所述第二验证码图片作图像形态学膨胀变换、图像高斯模糊变换和图像伽马校正的处理。\n[0135] 步骤4A04:将处理后的第二验证码图片与所述第一验证码图片进行像素融合。\n[0136] 步骤4A05:对像素融合后的验证码图片进行空间色彩的变换后生成最终验证码图片。\n[0137] 图4B是步骤105的实施例2的流程图,实现本发明生成最终验证码图片的步骤如下:\n[0138] 步骤4B01:拷贝所述初始验证码图片以得到拷贝图片,所述拷贝图片为第三验证码图片。\n[0139] 步骤4B02:根据所述用户设定参数中的难易度参数和所述随机参数中的图片特效处理参数,在所述第三验证码图片中加入随机噪点和/或随机干扰线后得到第四验证码图片。\n[0140] 步骤4B03:依次对所述第四验证码图片作图像形态学膨胀变换、图像高斯模糊变换和图像伽马校正的处理。\n[0141] 步骤4B04:将处理后的第四验证码图片与所述初始验证码图片进行像素融合。\n[0142] 步骤4B05:对像素融合后的验证码图片进行空间色彩的变换后生成最终验证码图片。\n[0143] 在执行图4A或图4B所有步骤前、后或之中时,根据用户设定的难易程度和随机参数可以对初始验证码图片中的字符进行扭曲的步骤。\n[0144] 为提升视觉体验,可采用下述方法对像素融合后验证码图片进行空间色彩的变换:\n[0145] 选取与原前景色同色调角(hue angle)且不同彩度(colourfulness)和明度(lightness)的颜色作为次前景色,所述原前景色为像素融合后验证码图片中的字符颜色;\n利用公式I新=f1(x,y)·I原+f2(x,y)·I次,从设定方向上进行所述原前景色与所述次前景色的色彩线性合成,其中,I原为坐标(x,y)处的原前景色的色彩向量,I次为坐标(x,y)处的次前景色的色彩向量,I新为坐标(x,y)处的色彩合成后的色彩向量,f1(x,y)和f2(x,y)是与空间位置相关的变换函数。\n[0146] 本发明图片验证码的实现方法,利用开放的用户设定参数使得程序开发人员可以不定期调整参数以求验证码图片的多样性,同时内置的随机各种参数有利于验证码多样化的实现,使得验证码图片更加难以破解,可有效防止页面被恶意攻击,提高了网络页面的安全性;由于能生成不同识别难度的验证码和考虑了良好的用户视觉体验,可满足不同系统开发和使用的要求。\n[0147] 参见图5所示,图5是本发明提供的图片验证码的生成方法实施例2的流程图,在实际应用中,在步骤105之后,本发明实施例还可以包括:\n[0148] 步骤505:根据用户设定参数中的输出验证码图片尺寸参数,调整所述最终验证码图片为预设尺寸和预设格式后,在预设的显示位置向用户显示所述最终验证码图片。\n[0149] 所述预设格式也就是在设定位置处显示图片的格式,包括:\n[0150] bmp,jpg,jpeg,png,tiff,gif,pcx,tga,exif,fpx,svg,psd,cdr,pcd,dxf,ufo,eps,ai,raw等。\n[0151] 本实施例将生成的最终验证码图片向用户进行显示,可以方便用户输入验证码图片中的字符,以实现身份验证等目的,同一网页向用户显示的验证码的难易程度可能截然不同,但是验证码人眼识别难度却不高,不但有效防止了恶意程序的攻击,也提升了用户的视觉体验效果。\n[0152] 参考图6所示,图6是本发明提供的图片验证码的实现装置的实施例1的结构示意图,本实施例的图片验证码的实现装置包括:第一获取单元1,用于获取当前验证码参数,所述验证码参数包括用户设定参数和随机参数;第二获取单元2,用于根据随机参数中的字符长度参数和字符内容参数确定验证码字符串,并根据用户设定参数中的字体库路径参数从指定字体库中获取所述验证码字符串中每个字符对应形状数字矩阵;第一生成单元3,用于将每个形状数字矩阵转化为对应字体形状的字符图像,并根据用户设定参数中的至少一个参数和所述随机参数中的至少一个参数对所有字符图像进行包括字体形状、字符颜色和字符间距调整的处理后,以生成初始验证码图片;背景填充单元4,用于根据随机参数中的背景色选取参数随机获取背景色,并利用所述背景色填充所述初始验证码图片的背景;第二生成单元5,用于根据用户设定参数中的难易度参数和随机参数中的图片特效处理参数对背景填充后的初始验证码图片进行防破解处理后,对处理后的初始验证码图片进行色彩变换处理,以生成最终验证码图片。\n[0153] 参见图7所示,图7为本发明图片验证码的实现装置的实施例1中第二获取单元的结构示意图,第二获取单元2包括:参数选取单元21,用于根据用户设定参数中的字体库路径参数从预先设定的随机控制参数中随机选取一个参数,所述一个参数对应指定字体库中的一个设定字体文件;数字矩阵取出单元22,用于从设定字体文件中获取描述当前字符字体形状的数字矩阵。\n[0154] 参见图8所示,图8为本发明图片验证码的实现装置的实施例1中第一生成单元的结构示意图,第一生成单元3包括:转化单元31,用于将每个形状数字矩阵分别贴图到对应的空白的字符图像画布中,并将每个形状数字矩阵转化为对应字体形状的字符以生成字符图像;处理单元32,用于根据用户设定参数中的难易度参数和随机参数中的字符特效处理参数,按照随机设定的旋转角度和缩放倍数旋转和/或缩放所述字符图像中的单个字符,并对所述旋转和/或缩放后的单个字符进行字体特效处理,所述字体特效处理包括随机立体感和/或空心字体处理;贴图单元33,用于将处理后的所有字符图像以用户设定参数中的图像质量参数所设定的图像清晰度依次贴贴图到一个空白的验证码图像画布中;\n距离调整单元34,用于调整所述验证码图像画布中每相邻两个字符之间的距离;着色单元\n35,用于根据随机参数中的字符色选取参数随机获取颜色,并利用随机获取的颜色为距离调整后的字符着色后生成初始验证码图片。\n[0155] 参见图9所示,图9为本发明图片验证码的实现装置的实施例1中第二生成单元的结构示意图,第二生成单元5包括:\n[0156] 第一添加单元51,用于根据用户设定参数中的难易度参数和随机参数中的图片特效处理参数,在初始验证码图片中加入随机噪点和/或随机干扰线后得到第一验证码图片;第一拷贝单元52,用于拷贝第一验证码图片以得到拷贝图片,所述拷贝图片为第二验证码图片;第一图片处理单元53,用于依次对第二验证码图片作图像形态学膨胀变换、图像高斯模糊变换和图像伽马校正的处理;第一融合单元54,用于将处理后的第二验证码图片与所述第一验证码图片进行像素融合;色彩变换单元55,用于对像素融合后的验证码图片进行空间色彩的变换后生成最终验证码图片;\n[0157] 以及,\n[0158] 第二拷贝单元56,用于拷贝初始验证码图片以得到拷贝图片,所述拷贝图片为第三验证码图片;第二添加单元57,用于所述用户设定参数中的难易度参数和随机参数中的图片特效处理参数,在所述第三验证码图片中加入随机噪点和/或随机干扰线后得到第四验证码图片;第二图片处理单元58,用于依次对所述第四验证码图片作图像形态学膨胀变换、图像高斯模糊变换和图像伽马校正的处理;第二融合单元59,用于将处理后的第四验证码图片与所述初始验证码图片进行像素融合;所述色彩变换单元55,还用于对像素融合后的验证码图片进行空间色彩的变换后生成最终验证码图片。\n[0159] 上述色彩变换单元55包括:选取单元551,用于选取与原前景色同色调角且不同彩度和明度的颜色作为次前景色,所述原前景色为像素融合后的验证码图片中的字符颜色;色彩合成单元552,用于利用公式I新=f1(x,y)·I原+f2(x,y)·I次,从设定方向上进行所述原前景色与所述次前景色的色彩线性合成,其中,I原为坐标(x,y)处的原前景色的色彩向量,I次为坐标(x,y)处的次前景色的色彩向量,I新为坐标(x,y)处的色彩合成后的色彩向量,f1(x,y)和f2(x,y)是与空间位置相关的变换函数。\n[0160] 参考图10所示,图10是本发明提供的图片验证码的实现装置实施例2的结构图,在实际应用中,本发明实施例还可以包括:显示单元6,用于根据用户设定参数中的输出验证码图片尺寸参数,调整所述最终验证码图片为预设尺寸和预设格式后,在预设的显示位置向用户显示所述最终验证码图片。\n[0161] 参见图11所示,图11是根据不同用户设定参数所生成的不同图片示例,假设本图片示例的默认参数为:\n[0162] 字体库:en1,en1下有0.ttf1.ttf和2.ttf三个字体文件;字集:English;图像质量:0.5;输出尺寸:高50像素,宽150像素;难易程度:0.0;验证码长度:5。\n[0163] 在上述默认参数的基础上,调整其中的一个参数且保持其它参数不变所生成的图片为:\n[0164] 第一组图片为保持其它参数不变,调整难易程度分别为-1.0、-0.5、0.0、0.5和\n1.0所生成的验证码图片效果示意图;\n[0165] 第二组图片为保持其它参数不变,调整图像质量分别为0.2、0.5和0.8所生成的验证码图片效果示意图\n[0166] 第三组图片为保持其它参数不变,调整字体库路径和字符集分别为(en2,English)、(en3,English)(cn1,Chinese)和(cn2,Chinese)所生成的验证码图片效果示意图;\n[0167] 第四组图片为保持其它参数不变,调整字符长度分别为3、4、7和10所生成的验证码图片效果示意图。\n[0168] 需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。\n[0169] 以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
法律信息
- 2014-07-09
- 2012-12-26
实质审查的生效
IPC(主分类): G06T 1/00
专利申请号: 201210276541.8
申请日: 2012.08.03
- 2012-11-07
引用专利(该专利引用了哪些专利)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 |
1
| |
2012-02-22
|
2011-08-16
| | |
2
| |
2008-06-11
|
2007-12-27
| | |
3
| |
2010-12-22
|
2010-08-25
| | |
被引用专利(该专利被哪些专利引用)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有被任何外部专利所引用! |