`
xxtianxiaxing
  • 浏览: 707334 次
  • 性别: Icon_minigender_1
  • 来自: 陕西
社区版块
存档分类
最新评论

java 图片 验证码

    博客分类:
  • web
阅读更多
	 
//	//验证码图片中可以出现的字符集,可根据需要修改
//	private char mapTable[]={
//			'a','b','c','d','e','h',
//			'A','B','C','D','E','F',
//			'j','k','m','n','p','q',
//			'J','K','M','N','P','Q',
//			'r','s','t','u','v','w',
//			'R','S','T','U','V','W',
//			'x','y','z','X','Y','Z',
//			'2','3','4','5','6','7',
//			'8','9'
//	};
//	
//	public String getCertPic(int width, int height,OutputStream os) {
//		if(width<=0) {
//			width=60;
//		}
//		if(height<=0) {
//			height=20;
//		}
//		
//		BufferedImage image = new BufferedImage(width, height,BufferedImage.TYPE_INT_RGB);
//		//获取图形上下文
//		Graphics g = image.getGraphics();
//		//设定背景颜色
//		g.setColor(new Color(0xDCDCDC));
//		g.fillRect(0, 0, width, height);
//		//画边框
//		g.setColor(Color.black);
//		g.drawRect(0, 0, width-1, height-1);
//		//随机产生的验证码
//		String strEnsure="";
//		//4代表4位验证码,如果要生成等多位的验证码 ,则加大数值
//		
//		for(int i=0; i<4; i++) {
//			strEnsure += mapTable[(int)(mapTable.length*Math.random())];
//		}
//		//将验证码显示在图像中,如果要生成更多位的验证码,增加drawString语句
//		g.setColor(Color.black);
//		g.setFont(new Font("Atlantic Inline", Font.PLAIN,18));
//		String str = strEnsure.substring(0, 1);
//		g.drawString(str, 8, 17);
//		 str = strEnsure.substring(1, 2);
//		 g.drawString(str, 20, 15);
//		 str = strEnsure.substring(2, 3);
//		 g.drawString(str, 35, 18);
//		 str = strEnsure.substring(3, 4);
//		 g.drawString(str, 45, 15);
//		 //随机产生10个干扰点
//		 
//		 Random random = new Random();
//		 for(int i=0; i<10; i++ ) {
//			 int x = random.nextInt(width);
//			 int y = random.nextInt(height);
//			 g.drawOval(x, y, 1, 1);
//		 }
//		//释放图形上下文
//		 g.dispose();
		 
		 
		 
		 
		 
		 
	Color getRandColor(int fc, int bc){//给定范围获得随机颜色
        Random random = new Random();
        if(fc>255) fc=255;
        if(bc>255) bc=255;
        int r=fc+random.nextInt(bc-fc);
        int g=fc+random.nextInt(bc-fc);
        int b=fc+random.nextInt(bc-fc);
        return new Color(r,g,b);
	}


	public String getCertPic(OutputStream os) {

		// 在内存中创建图象
		int width = 60, height = 20;
		BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
	
		// 获取图形上下文
		Graphics g = image.getGraphics();
	
		//生成随机类
		Random random = new Random();
	
		// 设定背景色
		g.setColor(this.getRandColor(200,250));
		g.fillRect(0, 0, width, height);
	
		//设定字体
		g.setFont(new Font("Times New Roman",Font.PLAIN,18));
	
		//画边框
		//g.setColor(new Color());
		//g.drawRect(0,0,width-1,height-1);
	
	
		// 随机产生155条干扰线,使图象中的认证码不易被其它程序探测到
		g.setColor(getRandColor(160,200));
		for (int i=0;i<155;i++)
		{
			int x = random.nextInt(width);
			int y = random.nextInt(height);
	        int xl = random.nextInt(12);
	        int yl = random.nextInt(12);
	        g.drawLine(x,y,x+xl,y+yl);
		}
	
		// 取随机产生的认证码(4位数字)
		String sRand="";
		for (int i=0;i<4;i++){
			String rand=String.valueOf(random.nextInt(10));
			sRand+=rand;
			// 将认证码显示到图象中
			g.setColor(new Color(20+random.nextInt(110),20+random.nextInt(110),20+random.nextInt(110)));//调用函数出来的颜色相同,可能是因为种子太接近,所以只能直接生成
			g.drawString(rand,13*i+6,16);
		}
	
	
	
		// 图象生效
		g.dispose();
	
		 try{
			 //输出图像到页面
			 ImageIO.write(image, "JPEG", os);
		 }catch(IOException e) {
			 return "";
		 }
		return sRand;
	}
	
	
	
	/**
	 * 
	 
	public String getCertPic() {
		
	
	
	Color getRandColor(int fc, int bc){//给定范围获得随机颜色
	        Random random = new Random();
	        if(fc>255) fc=255;
	        if(bc>255) bc=255;
	        int r=fc+random.nextInt(bc-fc);
	        int g=fc+random.nextInt(bc-fc);
	        int b=fc+random.nextInt(bc-fc);
	        return new Color(r,g,b);
	}
	
	
	//设置页面不缓存
	response.setHeader("Pragma","No-cache");
	response.setHeader("Cache-Control","no-cache");
	response.setDateHeader("Expires", 0);

	// 在内存中创建图象
	int width=60, height=20;
	BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);

	// 获取图形上下文
	Graphics g = image.getGraphics();

	//生成随机类
	Random random = new Random();

	// 设定背景色
	g.setColor(getRandColor(200,250));
	g.fillRect(0, 0, width, height);

	//设定字体
	g.setFont(new Font("Times New Roman",Font.PLAIN,18));

	//画边框
	//g.setColor(new Color());
	//g.drawRect(0,0,width-1,height-1);


	// 随机产生155条干扰线,使图象中的认证码不易被其它程序探测到
	g.setColor(getRandColor(160,200));
	for (int i=0;i<155;i++)
	{
	 int x = random.nextInt(width);
	 int y = random.nextInt(height);
	        int xl = random.nextInt(12);
	        int yl = random.nextInt(12);
	 g.drawLine(x,y,x+xl,y+yl);
	}

	// 取随机产生的认证码(4位数字)
	String sRand="";
	for (int i=0;i<4;i++){
	    String rand=String.valueOf(random.nextInt(10));
	    sRand+=rand;
	    // 将认证码显示到图象中
	    g.setColor(new Color(20+random.nextInt(110),20+random.nextInt(110),20+random.nextInt(110)));//调用函数出来的颜色相同,可能是因为种子太接近,所以只能直接生成
	    g.drawString(rand,13*i+6,16);
	}

	// 将认证码存入SESSION
	session.setAttribute("rand",sRand);


	// 图象生效
	g.dispose();

	// 输出图象到页面
	ImageIO.write(image, "JPEG", response.getOutputStream());


	}
	*/
	



分享到:
评论

相关推荐

    Java图片验证码工具类

    Java图片验证码工具类是一种在Web应用中用于防止恶意自动化操作(如机器人)的常用安全机制。它通过生成随机的字符序列并将其显示为图片来工作,用户需要输入看到的字符才能完成验证。以下是对这个Java工具类的详细...

    JAVA图片验证码 图片验证码

    JAVA图片验证码 图片验证码JAVA图片验证码 图片验证码JAVA图片验证码 图片验证码JAVA图片验证码 图片验证码JAVA图片验证码 图片验证码JAVA图片验证码 图片验证码

    java图片验证码

    ### Java 图片验证码实现原理与代码解析 #### 一、概述 在许多网站或应用程序中,为了防止机器人的恶意操作,经常会使用到图形验证码。Java 图片验证码是一种常见的实现方式,它通过生成具有一定随机性的图像,并...

    java图片验证码源码

    验证码(Vercode)是网络应用中常用的一种...总的来说,创建Java图片验证码涉及多个技术点,包括字符串生成、图像处理、随机数生成等。通过理解并实践这些技术,开发者可以创建出适合自己应用的高效安全的验证码系统。

    java-图片验证码.zip

    这个"java-图片验证码.zip"压缩包包含了一个实现Java图片验证码功能的工具类(VerifyUtil.java)和一个具体的控制器(AppPicCodeController.java),用于处理验证码的生成与验证。 首先,我们来详细了解一下`...

    Java图片验证码生成工具类

    好看的图片验证码,包含干扰线、噪点、扭曲图片等。。

    java解析图片验证码

    java解析图片验证码

    java图片验证码 选择 VerificationImage

    java图片验证码 选择 VerificationImage 基本上修改过后能够满足大部分的需求,其中注释也比较详尽,方便阅读和修改

    java 图片验证码

    Java 图片验证码是一种常见的安全措施,用于防止自动化脚本或机器人进行恶意操作,如批量注册、恶意登录等。在Web开发中,Java 提供了多种实现图片验证码的方式。本教程将详细讲解如何在Java Web项目中创建并使用...

    java-验证码识别-验证码破解

    在这个“java-验证码识别-验证码破解”的主题中,我们将深入探讨如何使用Java进行验证码识别,特别是通过Tess4J库进行OCR(光学字符识别)。 验证码的主要目的是防止自动化的恶意行为,如机器人攻击或垃圾邮件发送...

    java生成图片的验证码工具类及其使用

    java生成验证码的工具类,这个现在有依赖可以直接引入调用,但这个工具类没有引入依赖,大家也容易看懂代码,理解其含义。也可直接去工具类中调整生成验证码的宽度、高度、颜色、背景颜色、生成的随机数数量、干扰线...

    Java生成图片验证码工具类源码

    源码提供了一个生成图片验证码的工具类,适用于各种需要验证码的场景,如用户注册、登录等。该工具类使用随机字符生成验证码,并支持自定义验证码长度和字体样式。生成的验证码图片背景透明,线条清晰,可轻松辨认。...

    java识别图片验证码的2种方式

    包含5个识别图片验证码的类,分别对应不同5种不同的验证码 其中用了两种不同的实现方式(截取采样像素比对+Tesseract-OCR识别) 附带一个图像指纹类(判定图片相似度)和一个寻找联通线的类(八皇后算法实现)

    java图片验证码生成

    java图片验证码生成。有干扰线。随机字符。

    java图片验证码实现示例分享

    ### Java 图片验证码实现原理与示例解析 #### 一、引言 随着网络安全的重要性日益增加,验证码成为了网站登录及表单提交时不可或缺的一部分。它主要用于区分操作者是人类还是自动程序,以此来防止恶意软件的攻击。...

    java验证码生成验证

    csdn上三种java验证码生成方法,以及谷歌开源验证码,总共四种验证码生成集合。将生成的四个验证图片放在一个页面上以供比对,全部可以运行。 四种方法分别为: 1. 数字、字母、汉字混合验证码,叠影(给力)、扭曲 ...

    《java 图片验证码生成utils工具类》

    java 生成随机图片验证码 ,字母数组随机组合,加干扰线

Global site tag (gtag.js) - Google Analytics