posts - 22,comments - 35,trackbacks - 0

          <%@ page language="java" pageEncoding="UTF-8"%>
          <%@ pagecontentType
          ="image/jpeg" import="java.awt.*,java.awt.image.*,java.util.*,javax.imageio.*,com.swetake.util.Qrcode"%>
          <%!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("Comic    Sans    MS", Font.PLAIN, 20));

          //畫邊框
          //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();
          out.clear();
          out = pageContext.pushBody();

          //    輸出圖象到頁面
          ImageIO.write(image, "JPEG", response.getOutputStream());
          %>

           

          注:要先下載com.swetake.util.Qrcode包

          posted on 2009-06-29 15:47 kelven 閱讀(209) 評論(0)  編輯  收藏 所屬分類: jsp/servlet

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 招远市| 博乐市| 永城市| 齐齐哈尔市| 策勒县| 儋州市| 深州市| 青海省| 南岸区| 宝鸡市| 兰西县| 崇左市| 盐津县| 武清区| 瑞金市| 浦城县| 乐业县| 佛冈县| 城固县| 崇州市| 岳池县| 余干县| 嘉善县| 霸州市| 通辽市| 长白| 岚皋县| 九龙坡区| 九江县| 隆尧县| 德阳市| 常熟市| 兴义市| 铜陵市| 禄丰县| 普陀区| 和平县| 高台县| 丰镇市| 深圳市| 金沙县|