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登录页面。
代码如下图:
<div align="center">VerifyServlet.java</div>
<div align="center">LoginServlet.java</div>
<div align="center">login.jsp(用到了javascript语法来更换验证码)</div>
10月8日更正:途中的js代码有错误,将"ducument"改为"document"。
通过如上代码便可实现HTML中的验证码效果。
2018.3.19更
欢迎加入我的Java交流1群:659957958。群里目前已有1800人,每天都非常活跃,但为了筛选掉那些不怀好意的朋友进来搞破坏,所以目前入群方式已改成了付费方式,你只需要支付9块钱,即可获取到群文件中的所有干货以及群里面各位前辈们的疑惑解答;为了鼓励良好风气的发展,让每个新人提出的问题都得到解决,所以我将得到的入群收费收入都以红包的形式发放到那些主动给新手们解决疑惑的朋友手中。在这里,我们除了谈技术,还谈生活、谈理想;在这里,我们为你的学习方向指明方向,为你以后的求职道路提供指路明灯;在这里,我们把所有好用的干货都与你分享。还在等什么,快加入我们吧!
2018.4.21更:如果群1已满或者无法加入,请加Java学习交流2群:305335626 。群2作为群1的附属群,除了日常的技术交流、资料分享、学习方向指明外,还会在每年互联网的秋春招时节在群内发布大量的互联网内推方式,话不多说,快上车吧!
联系
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.