Java随机生成图片
用Java语言生成一个带有字符串文本的图片总结来说只需要如下四步:
- 1.创建图片缓冲区
- 2.设置图片缓冲区的宽高及保存图片的类型
- 3.得到这个图片的绘制环境(拿到画笔)
- 4.将图片保存起来
//第一、二步,传入参数为缓冲区宽、高、保存图片类型
BufferedImage image=new BufferedImage(width1,height1,BufferedImage.TYPE_INT_RGB);
//第三步,得到绘制环境(需要用到Graphics类)
Graphics paint=image.getGraphics();
paint.setColor(Color.WHITE);//设置画笔颜色为白色
paint.fillRect(start,end,width2,height2);//绘制矩形并填充,将图片缓冲区的(start,end)坐标作为绘制图片的左上角坐标,绘制图片宽为width2、高为height2
paint.setColor(Color.RED);//设置画笔颜色为红色
paint.drawString(str,x,y);//设置需要绘制在图片上的文本,参数为字符串、字符串所在的x坐标和y坐标
//第四步,将图片保存起来(需要用到ImageIO类)
ImageIO.write(image,"JPEG",out);//参数为图片缓冲区、图片类型、输出流
通过以上代码便可实现用java语言生成一个简易的带有字符串文本的图片,具体实现如下,首先在IDEA中创建VerifyCode.java类:
有错误,请将g.drawStrig(sb.toString(),width/4,height-5);改为g.drawString(str,i*width/4,height-5);
通过代码VerifyCode vc=new VerifyCode();
创建VerifyCode对象后就可以调用上述所有方法便可以实现随机验证码的图片了。
在HTML表单中实现验证码
借用上篇Java Web学习笔记之session入门中的保存用户登录信息案例中的代码,新增:
- VerifyServlet.java:生成图片,保存图片上的文本到session域中,将图片响应给客户端。
- LoginServlet.java中新增作用:判断用户输入的验证码是否正确,若正确则跳转至下一链接,若错误则保存错误信息到request域中,然后请求转发至login.jsp登录页面。
代码如下图:
VerifyServlet.java
LoginServlet.java
login.jsp(用到了javascript语法来更换验证码)
10月8日更正:途中的js代码有错误,将”ducument”改为”document”。
通过如上代码便可实现HTML中的验证码效果。
2018.3.19更
欢迎加入我的Java交流1群:659957958。
2018.4.21更:如果群1已满或者无法加入,请加Java学习交流2群:305335626 。
联系
If you have some questions after you see this article,you can tell your doubts in the comments area or you can find some info by clicking these links.