<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Edzy_Java

      BlogJava :: 首頁 ::  ::  ::  :: 管理 ::
      58 隨筆 :: 12 文章 :: 11 評論 :: 0 Trackbacks

    生成方法(一)
    // 在內存中創建圖象
    int width=55, height=20;
    BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);

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

    // 設定背景色
    g.setColor(new Color(0xECECEC));
    g.fillRect(0, 0, width, height);

    //畫邊框
    g.setColor(Color.black);
    g.drawRect(0,0,width-1,height-1);
    Random random = new Random();
    // 取隨機產生的認證碼(4位數字)
    String rand = "";
    rand += random.nextInt(9);
    rand += random.nextInt(9);
    rand += random.nextInt(9);
    rand += random.nextInt(9);

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

    //將認證碼顯示到圖象中,并在12到18象素之間隨機設定字體的大小
    g.setColor(Color.black);
    random.setSeed(new Date().getTime());
    g.setFont(new Font("Atlantic Inline",Font.PLAIN,(12 + random.nextInt(6))));
    String Str = rand.substring(0,1);
    g.drawString(Str,8,17);

    g.setFont(new Font("Atlantic Inline",Font.PLAIN,(12 + random.nextInt(6))));
    Str = rand.substring(1,2);
    g.drawString(Str,20,15);

    g.setFont(new Font("Atlantic Inline",Font.PLAIN,(12 + random.nextInt(6))));
    Str = rand.substring(2,3);
    g.drawString(Str,35,18);

    g.setFont(new Font("Atlantic Inline",Font.PLAIN,(12 + random.nextInt(6))));
    Str = rand.substring(3,4);
    g.drawString(Str,45,15);

    // 隨機產生88個干擾點,使圖象中的認證碼不易被其它程序探測到
    for (int i=0;i<30;i++)
    {
    ??? int x = random.nextInt(width);
    ??? int y = random.nextInt(height);
    ??? g.setColor(new Color(random.nextInt(255), random.nextInt(255), random.nextInt(255)));
    ??? g.drawOval(x,y,0,1);
    }

    // 圖象生效
    g.dispose();

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

    生成方法(二)
    <%@ page contentType="image/jpeg" import="java.awt.*,
    java.awt.image.*,java.util.*,javax.imageio.*" %>
    <%!
    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);
    }
    %>
    <%

    int randomLen=4;
    try{
    randomLen=Integer.parseInt(request.getParameter("param"));
    }
    catch(Exception e){
    ? e.printStackTrace();
    }

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

    // 在內存中創建圖象
    int width=13*randomLen+8, 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<30*randomLen;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<randomLen;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("validcode",sRand);

    // 圖象生效
    g.dispose();

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

    posted on 2006-11-15 17:10 lbfeng 閱讀(294) 評論(0)  編輯  收藏 所屬分類: JSP&Servlet技術
    主站蜘蛛池模板: 浮力影院亚洲国产第一页| 亚洲国产精品乱码在线观看97| 亚洲国产aⅴ成人精品无吗| 久久精品九九亚洲精品天堂| 久久久无码精品亚洲日韩蜜臀浪潮| 久久久久久A亚洲欧洲AV冫| 亚洲国产精品无码中文lv| 成年女人免费v片| 亚洲A∨无码一区二区三区| 亚洲成色999久久网站| 羞羞视频免费网站在线看| 女人18毛片水真多免费播放| 亚洲AV无码久久精品成人| 中文字幕亚洲免费无线观看日本 | 0588影视手机免费看片| 亚洲A∨精品一区二区三区| 亚洲日本中文字幕天堂网| 亚洲男人av香蕉爽爽爽爽| 亚洲综合无码精品一区二区三区| 精品国产日韩亚洲一区| 亚洲三级视频在线| 三年片在线观看免费大全电影| 18观看免费永久视频| 国产成人亚洲综合无码| 99re6在线视频精品免费| 亚洲欧洲精品成人久久奇米网| 亚洲AV无码久久久久网站蜜桃 | 性xxxx视频免费播放直播| 亚洲男人av香蕉爽爽爽爽| 99久久婷婷免费国产综合精品| 免费国产成人高清在线观看麻豆 | 成人永久免费高清| 国产偷国产偷亚洲高清日韩 | 亚洲欧洲视频在线观看| 99精品免费视品| 亚洲国产成人精品无码区在线网站| 亚洲成a∨人片在无码2023 | 好男人视频在线观看免费看片| 亚洲色欲或者高潮影院| 免费的涩涩视频在线播放| 亚洲日韩国产欧美一区二区三区 |