Java的生成图片验证码(有点仿QQ验证码的意思)http://www.bieryun.com/806.html
看了挺多图片验证码的代码,感觉没什么长的好看点的,就自己动手写了个,写完发现跟QQ的有几分相似,比较满意。

功能包括:自定义图片尺寸和字符长度,随机背景颜色和字符颜色,随机字符偏移角度,字符平滑边缘,干扰线,噪点,背景扭曲。
本来想做字符扭曲的,不知道怎的先生成文字再扭曲就报错了,先就这样吧,希望有高手能帮助修正一下。
需要说明的是之所以有几分像QQ的验证码感觉是因为这个阿尔及利亚的字体,如果系统没有的话需要自行安装,百度搜字体名能下载到,丢系统字体文件夹就行。
JAVA文件和字体打了个包发资里里,http://download.csdn.net/detail/ruixue0117/7138469。
效果图:

AuthImage类:
-
包 hh.com.util;
-
-
import java.io.IOException;
-
-
import javax.servlet.ServletException;
-
import javax.servlet.http.HttpServletRequest;
-
import javax.servlet.http.HttpServletResponse;
-
import javax.servlet.http.HttpSession;
-
-
公共类 AuthImage 扩展 javax.servlet.http.HttpServlet 实现 javax.servlet.Servlet {
- static final long serialVersionUID = 1L;
-
- 公共无效 服务(HttpServletRequest请求,HttpServletResponse响应) 抛出 ServletException,IOException {
- response.setHeader(“Pragma” , “No-cache” );
- response.setHeader(“Cache-Control” , “no-cache” );
- response.setDateHeader(“Expires” , 0 );
- response.setContentType(“image / jpeg” );
-
-
- 字符串verifyCode = VerifyCodeUtils.generateVerifyCode(4 );
-
- HttpSession session = request.getSession(true );
- session.setAttribute(“rand” ,verifyCode.toLowerCase());
-
- int w = 200 ,h = 80 ;
- VerifyCodeUtils.outputImage(w,h,response.getOutputStream(),verifyCode);
-
- }
- }
VerifyCodeUtils类,生成图片流,然后不同框架下的输出可以参考上面的代码或者自行百度,无非就是获取的OutputStream和ContentType的的区别,主要的方法可直接执行:
(PS:不想下载的话复制这个类就行了)
web.xml中配置:
-
< servlet >
- < servlet-name > AuthImage </ servlet-name >
- < servlet-class > hh.com.util.AuthImage </ servlet-class >
- </ servlet >
- < servlet-mapping >
- < servlet-name > AuthImage </ servlet-name >
- < url-pattern > / authImage </ url-pattern >
- </ servlet-mapping >
网友评论