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 保爾任 閱讀(152) 評論(0)  編輯  收藏

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


          網站導航:
           

          <2025年7月>
          293012345
          6789101112
          13141516171819
          20212223242526
          272829303112
          3456789

          常用鏈接

          留言簿(4)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 沾化县| 黄山市| 洛隆县| 玛纳斯县| 南投县| 饶平县| 正镶白旗| 简阳市| 股票| 海伦市| 罗源县| 阿尔山市| 将乐县| 青冈县| 晋中市| 克拉玛依市| 安达市| 天镇县| 微博| 阳朔县| 肥东县| 呼图壁县| 仙桃市| 辰溪县| 东阳市| 中西区| 鄄城县| 宁强县| 临颍县| 措勤县| 永顺县| 嘉义市| 顺昌县| 恩施市| 聂拉木县| 葵青区| 巨鹿县| 启东市| 杨浦区| 定南县| 甘南县|