闲来无事---写了一个生成验证码的代码

本文分享了作者自制的验证码代码,实现了不错的验证码生成效果。

 昨天写了一个生成验证码的代码,效果还可以,现在把他贴出来,

//清除缓存。、。。
		response.setHeader("Expires", "-1");
		response.setHeader("Cache-Control","no-cache");
		response.setHeader("Pragma","no-cache");
		
		BufferedImage image=new BufferedImage(Width, Hight,BufferedImage.TYPE_INT_RGB );
		Graphics2D graphics=image.createGraphics();
		Random random=new Random();
		//画出边线
		graphics.setColor(Color.blue);
		graphics.drawRect(0, 0, 120, 25);
		//设置背景
		Color bgcolor=colorstyle[random.nextInt(colorstyle.length)];
		graphics.setColor(bgcolor);
		graphics.fillRect(1, 1, Width, Hight);
		for(int i=0;i<4;i++){
			//画出干扰线
			graphics.setColor(colorstyle[random.nextInt(colorstyle.length)]);
			graphics.drawLine(random.nextInt(Width), random.nextInt(Hight),random.nextInt(Width), random.nextInt(Hight));
		}
		
		//写出数字(验证码)
		int x=5;
		String temp="";//存放验证码
		for(int i=0;i<4;i++){
			char num=Number[random.nextInt(Number.length)];
			temp=temp+num;
			Color fontcolor=colorstyle[random.nextInt(colorstyle.length)];//字体颜色
			while(fontcolor==bgcolor){//不能让字体颜色和背景颜色相同,while循环的好处是当条件满足的时候一直执行while循环,也是和if的本质区别
				fontcolor=colorstyle[random.nextInt(colorstyle.length)];
			}
			graphics.setColor(fontcolor);
			graphics.setFont(new Font(fontName[random.nextInt(fontName.length)],fontstyle[random.nextInt(fontstyle.length)], 20)); 
			graphics.drawString(num+"", x, 22);
			x+=random.nextInt(20)+10; //控制他们之间的间距,最少是10
		}
		System.out.println(temp); 
		HttpSession session=request.getSession();
		//将验证码存放进 session
		session.setAttribute("yzm", temp);
		ImageIO.write(image,"png", response.getOutputStream());
		
		graphics.dispose();
		response.flushBuffer();


具体代码就这样,通过BuffredImage得到Graphics2D对象,然后通过Graphics2D画数据,通过ImageIo将它显示出来,过程就这样。

下面是效果:




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值