`
huangshanghua
  • 浏览: 56890 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

随机生成图片验证码

    博客分类:
  • java
阅读更多
 public class Img extends HttpServlet {

	@Override
	protected void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		//设置Content-Type响应头
		response.setContentType("image/jpeg");
		//下面三条语句用于设置页面不缓存
		response.setHeader("Pragma", "No-cache");
		response.setHeader("Cache-Control", "no-cache");
		response.setDateHeader("Expires", 0);
		
		OutputStream out = response.getOutputStream();
		int width = 80;
		int height = 20;
		
		//建立指定宽、高和BufferedImage对象
		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);
		
		// 随机产生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); 
		} 
		
		//设置字体
		g.setFont(new Font("Times New Roman",Font.ITALIC,18));
		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, 20*i + 6, 16);
		}
		
		g.dispose();
		//输出图像到页面
		ImageIO.write(image, "JPEG", out);	
	}

         //给定范围获得随机颜色 
	private 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); 
	} 
}

web.xml配置:
<servlet>
		<servlet-name>img</servlet-name>
		<servlet-class>com.servlet.Img</servlet-class>
	</servlet>
	<servlet-mapping>
		<servlet-name>img</servlet-name>
		<url-pattern>/test</url-pattern>
	</servlet-mapping>

JSP应用:
<img alt="" src="/test">, src是url-pattern的值
分享到:
评论

相关推荐

    Android实现随机生成图片验证码的示例程序,直接构建运行,代码文件简单易参考

    Android实现随机生成图片验证码的示例程序,直接构建运行,代码文件简单易参考 Android实现随机生成图片验证码的示例程序,直接构建运行,代码文件简单易参考 Android实现随机生成图片验证码的示例程序,直接构建...

    java随机生成图片验证码

    Java 随机生成图片验证码是一种常见的网络安全技术,主要用于防止自动化程序(如机器人)进行恶意操作,例如批量注册、刷票等。在这个过程中,我们通常会创建一个包含随机字符的字符串,然后将其显示为带有扭曲、...

    张家力jquery-1.12.0.js随机生成图片验证码

    【jQuery 1.12.0.js 随机生成图片验证码详解】 在网页开发中,图片验证码是一种常见的安全机制,用于防止自动化程序(如机器人)进行恶意操作,如批量注册、频繁提交表单等。"张家力jquery-1.12.0.js随机生成图片...

    Android 自定义View之随机生成图片验证码

    验证码通常由一组随机生成的字符组成,这些字符可能是数字、字母或其他特殊符号,它们被绘制在一个图片上,并通过扭曲、旋转、添加噪声等方式增加识别难度,以防止机器自动识别。在Android中,我们可以利用自定义...

    随机生成图片验证码工具类

    随机生成验证码工具类

    vue插件——使用canvas生成图形验证码

    在实现这个Vue插件时,首先我们需要在canvas上设置一个足够大的画布,然后通过JavaScript随机生成一些线条、曲线、矩形、圆形或者随机字符,并将它们以不同的颜色、大小和角度绘制在canvas上。颜色和形状的随机性有...

    随机选择图片并生成图片验证码

    1.将你想显示成背景的图片放入指定文件夹。 2.里面有实例,直接运行里面的实例你就可以看见你放的图片显示成了验证码的背景图片。 3.刷新一次背景图片也更着...4.每次变换的显示的图片都是随机选择并生成图片验证码。

    Java如何随机生成图片验证码

    主要为大家详细介绍了Java如何随机生成图片验证码,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

    canvas随机生成图片验证码

    在这个项目中,我们将使用`canvas`来随机生成图片验证码。 首先,我们需要在`index.html`文件中设置一个`canvas`元素,通过`&lt;canvas id="captcha"&gt;&lt;/canvas&gt;`标签来创建一个画布。这个画布将会是验证码图像的容器。...

    Java随机生成验证码图片

    Java随机生成验证码图片,适用于web登录验证等。个人觉得很不错~

    java生成图片验证码

    Java作为一门广泛使用的服务器端编程语言,提供了丰富的功能来生成图片验证码。本篇将深入讲解如何使用Java Servlet来实现这一过程。 首先,我们来看标题"java生成图片验证码"。这个标题暗示我们将探讨的是在Java...

    生成随机验证码和图片

    生成随机验证码和图片,简易使用。 在web项目中随意应用。可自己修改

    利用jsp生成图片验证码

    在本主题“利用jsp生成图片验证码”中,我们将探讨如何在JavaServer Pages (JSP)上下文中创建一个简单的图片验证码,而无需使用Servlet。首先,我们要明白JSP是Java Web开发中的视图层技术,它允许我们在HTML页面中...

    JAVA实现随机图片验证码简单方法

    JAVA实现随机图片验证码简单方法.rtf

    vc++ 根据文字生成图片 文字图片验证码.zip

    "vc++ 根据文字生成图片 文字图片验证码.zip"是一个关于如何使用Visual C++(简称VC++)编程语言来创建文字图片验证码的项目。这个压缩包可能包含必要的源代码、文档和其他资源,帮助开发者了解和实现验证码生成的...

    生成随机前台验证码图片

    生成随机前台验证码图片

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

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

Global site tag (gtag.js) - Google Analytics