资源描述:
《纯java生成验证码》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、纯java生成验证码java生成图片并保存 2012-09-1417:03:28
2、 分类: java
3、 标签:验证码 java生成图片
4、字号 订阅本代码可直接运行,生成的验证码是image.jpg,被保存在D盘的根目录下面。packagecom.server;importjava.awt.Color;importjava.awt.Font;importjava.awt.Graphics;importjava.awt.image.BufferedImage;importjava.io.File;importjava.util.Random;importjavax.imagei
5、o.ImageIO;importjavax.imageio.stream.ImageOutputStream;publicclassImage{ publicStringsRand=""; publicColorgetRandColor(intfc,intbc){//给定范围获得随机颜色 Randomrandom=newRandom(); if(fc>255)fc=255; if(bc>255)bc=255; intr=fc+random.nextInt(bc-fc); intg=fc+random.nextInt(bc-fc); intb=fc+r
6、andom.nextInt(bc-fc); returnnewColor(r,g,b); } publicBufferedImagecreatImage(){ //在内存中创建图象 intwidth=60,height=20; BufferedImageimage=newBufferedImage(width,height,BufferedImage.TYPE_INT_RGB); //获取图形上下文 Graphicsg=image.getGraphics(); //生成随机类 Randomrandom=newRandom(); //设定
7、背景色 g.setColor(getRandColor(200,250)); g.fillRect(0,0,width,height); //设定字体 g.setFont(newFont("TimesNewRoman",Font.PLAIN,18)); //画边框 //g.setColor(newColor()); //g.drawRect(0,0,width-1,height-1); //随机产生155条干扰线,使图象中的认证码不易被其它程序探测到 g.setColor(getRandColor(160,200)); for(in
8、ti=0;i<155;i++) { intx=random.nextInt(width); inty=random.nextInt(height); intxl=random.nextInt(12); intyl=random.nextInt(12); g.drawLine(x,y,x+xl,y+yl); } //取随机产生的认证码(4位数字) //Stringrand=request.getParameter("rand"); //rand=rand.substring(0,rand.indexOf(".")); for(inti
9、=0;i<4;i++){ Stringrand=String.valueOf(random.nextInt(10)); sRand+=rand; //将认证码显示到图象中 g.setColor(newColor(20+random.nextInt(110),20+random.nextInt(110),20+random.nextInt(110)));//调用函数出来的颜色相同,可能是因为种子太接近,所以只能直接生成 g.drawString(rand,13*i+6,16); } //图象生效 g.dispose(); returnimag
10、e; } publicstaticvoidmain(String[]args){ Filefile=newFile("D://image.jpg"); try{ BufferedImageimage=newImage().creatImage(); ImageOutputStreamimageIo=ImageIO.createImageOutputStream(file); ImageIO.write(image