posts - 73,  comments - 55,  trackbacks - 0
          文件名:Image.java
          ==================================================================
          /*
          * Created on 2004-8-4
          *
          * To change the template for this generated file go to
          * Window>Preferences>Java>Code Generation>Code and Comments
          */
          package myclass.test;

          import java.awt.*;
          import java.awt.image.*;
          import java.util.*;

          /**
          * @author
          *
          * To change the template for this generated type comment go to
          * Window>Preferences>Java>Code Generation>Code and Comments
          */
          public class Image {

          public String sRand="";

          public 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 BufferedImage creatImage(){

          // 在內存中創建圖象
          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 rand = request.getParameter("rand");
          //rand = rand.substring(0,rand.indexOf("."));

          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();
          return image;
          }
          }
          ======================================================================
          image.jsp(對bean的引用)

          <%@ page contentType="image/jpeg" import="javax.imageio.*" %>
          <jsp:useBean id="image" scope="session" class="myclass.test.Image"/>

          <%
          //設置頁面不緩存
          response.setHeader("Pragma","No-cache");
          response.setHeader("Cache-Control","no-cache");
          response.setDateHeader("Expires", 0);

          // 將認證碼存入SESSION
          session.setAttribute("rand",image.sRand);

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


          %>
          posted on 2006-07-04 10:51 保爾任 閱讀(150) 評論(0)  編輯  收藏

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


          網站導航:
           

          <2025年5月>
          27282930123
          45678910
          11121314151617
          18192021222324
          25262728293031
          1234567

          常用鏈接

          留言簿(4)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 太仓市| 九龙县| 关岭| 河津市| 毕节市| 吐鲁番市| 司法| 汾阳市| 石嘴山市| 浑源县| 洛扎县| 广水市| 东台市| 湖州市| 五常市| 云阳县| 南溪县| 台州市| 岑巩县| 永清县| 始兴县| 屯门区| 绩溪县| 祁阳县| 维西| 虎林市| 永新县| 昆明市| 洱源县| 麟游县| 西藏| 石景山区| 阳泉市| 克拉玛依市| 富裕县| 栾城县| 邛崃市| 茌平县| 吉首市| 佳木斯市| 怀柔区|