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);
          }%>
          <%
          //設(shè)置頁面不緩存
          response.setHeader("Pragma", "No-cache");
          response.setHeader("Cache-Control", "no-cache");
          response.setDateHeader("Expires", 0);

          //    在內(nèi)存中創(chuàng)建圖象
          int width = 60, height = 20;
          BufferedImage image = new BufferedImage(width, height,
              BufferedImage.TYPE_INT_RGB);

          //    獲取圖形上下文
          Graphics g = image.getGraphics();

          //生成隨機類
          Random random = new Random();

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

          //設(shè)定字體
          g.setFont(new Font("Comic    Sans    MS", Font.PLAIN, 20));

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

          //    隨機產(chǎn)生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);
          }

          //    取隨機產(chǎn)生的認證碼(4位數(shù)字)
          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)));
             //調(diào)用函數(shù)出來的顏色相同,可能是因為種子太接近,所以只能直接生成
             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

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


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 长顺县| 茶陵县| 保亭| 陕西省| 通城县| 余江县| 富民县| 米脂县| 来安县| 德化县| 黎川县| 济宁市| 乐业县| 潼关县| 德阳市| 应城市| 安溪县| 耿马| 吴忠市| 瓮安县| 广元市| 镇巴县| 永康市| 定西市| 临安市| 博湖县| 灌南县| 普兰县| 吉林省| 宽城| 太仆寺旗| 乐业县| 长阳| 伊金霍洛旗| 萍乡市| 桃江县| 墨竹工卡县| 马公市| 秀山| 盐源县| 蕲春县|