zoukankan      html  css  js  c++  java
  • 验证码的生成

    public static void ImageCodeMaker(){
    			// 定义图片的宽度和高度
    			int width = 90, height = 40;
    			// 创建一个图像对象
    			BufferedImage image = new BufferedImage(width, height,
    					BufferedImage.TYPE_INT_RGB);
    			// 得到图像的环境对象
    			Graphics g = image.createGraphics();
    			
    			g.setColor(getRandColor(180, 250));  
    		    g.fillRect(0, 0, width, height);  
    		    
    			Random random = new Random();
    			
    		    for (int i = 0; i < 5; i++) {
    				g.setColor(getRandColor(50, 100));
    				int x = random.nextInt(width);
    				int y = random.nextInt(height);
    				g.drawOval(x, y, 4, 4);
    			}
    			// 设置字体,下面准备画随机数
    			g.setFont(new Font("", Font.PLAIN, 40));
    			// 随机数字符串
    			String sRand = "";
    			for (int i = 0; i < 4; i++) {
    				// 生成四个数字字符
    				String rand = getRandomChar();; 
    						//String.valueOf(random.nextInt(10));
    				sRand += rand;
    				// 生成随机颜色
    				g.setColor(new Color(20 + random.nextInt(80), 20 + random
    						.nextInt(100), 20 + random.nextInt(90)));
    				// 将随机数字画在图像上
    				g.drawString(rand, (17 + random.nextInt(3)) * i + 8, 34);
    
    					// 生成干扰线
    					for (int k = 0; k < 12; k++) {
    						int x = random.nextInt(width);
    						int y = random.nextInt(height);
    						int xl = random.nextInt(9);
    						int yl = random.nextInt(9);
    						g.drawLine(x, y, x + xl, y + yl);
    					}
    			}
    			System.out.println(sRand);
    			
    	}
    
    	private static String getRandomChar() {
    
    		String ret ="";
    		
    		//数字和字母的组合
    		 String baseNumLetter = "0123456789ABCDEFGHJKLMNOPQRSTUVWXYZ";
    		//纯数字
    		// String baseNum = "0123456789";
    		 //纯字母
    		// String baseLetter = "ABCDEFGHJKLMNOPQRSTUVWXYZ";
    		 
    		// ret = baseLetter.charAt(new Random().nextInt(baseLetter.length()))+"";
    		 
    		// ret = baseNum.charAt(new Random().nextInt(baseNum.length()))+"";
    		 
    		 ret = baseNumLetter.charAt(new Random().nextInt(baseNumLetter.length()))+"";
    		 
    		 
    		 
    		 return ret;
    	}
    
    
    			/**
    			 * 产生一个随机的颜色
    			 * 
    			 * @param fc
    			 *            颜色分量最小值
    			 * @param bc
    			 *            颜色分量最大值
    			 * @return
    			 */
    			public static 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);  
    
    
     // 将生成的随机数字字符串写入Session  
            request.getSession(false).setAttribute("randcode", sRand);  
            // 使图像生效  
            g.dispose();  
            // 输出图像到页面  
            ImageIO.write(image, "JPEG", response.getOutputStream()); 
  • 相关阅读:
    TCP建立连接三次握手和释放连接四次握手
    集群/分布式环境下5种session处理策略
    MySQL两种引擎的区别
    【深入理解JVM】:类加载器与双亲委派模型
    Spring Cloud组件完整
    用Redis轻松实现秒杀系统
    分布式锁的基本原理
    中文分词-jieba
    win10安装mysql5.7.20解压版
    tenaorflow函数(1)
  • 原文地址:https://www.cnblogs.com/liangblog/p/4708096.html
Copyright © 2011-2022 走看看