狂奔 lion

          自強(qiáng)不息

          數(shù)字驗(yàn)證碼小圖生成程序

          做了一個(gè)登陸驗(yàn)證碼的生成小程序,或許對(duì)大家有用。支持背景圖和文字旋轉(zhuǎn)
          import java.awt.Color;
          import java.awt.Font;
          import java.awt.Graphics2D;
          import java.awt.image.BufferedImage;
          import java.io.File;
          import java.io.IOException;
          import java.util.Date;
          import java.util.Random;

          import javax.imageio.ImageIO;
          import javax.servlet.ServletException;
          import javax.servlet.http.HttpServletRequest;
          import javax.servlet.http.HttpServletResponse;

          import com.sun.image.codec.jpeg.JPEGCodec;
          import com.sun.image.codec.jpeg.JPEGEncodeParam;
          import com.sun.image.codec.jpeg.JPEGImageEncoder;

          /**
           * Servlet implementation class for Servlet: ImageGenerator
           * 
           
          */
          public class ImageGenerator extends javax.servlet.http.HttpServlet implements
                  javax.servlet.Servlet {
              
          protected void doGet(HttpServletRequest request,
                      HttpServletResponse response) 
          throws ServletException, IOException {
                  response.setContentType(
          "image/jpeg"); // 必須設(shè)置ContentType為image/jpeg
                  int length = 4// 設(shè)置默認(rèn)生成4個(gè)數(shù)字
                  Date d = new Date();
                  
          long lseed = d.getTime();
                  Random r 
          = new Random(lseed); // 設(shè)置隨機(jī)種子
                  if (request.getParameter("length"!= null) {
                      
          try {
                          length 
          = Integer.parseInt(request.getParameter("length"));
                      } 
          catch (NumberFormatException e) {
                      }
                  }

                  
          // 可以在此加入保存驗(yàn)證碼的代碼
                  
          // 創(chuàng)建內(nèi)存圖像
                  BufferedImage bi = ImageIO.read(new File(this.getServletContext().getRealPath("./imgc.jpg")));
                  
          //可以在上面讀入一個(gè)背景圖,然后在背景圖上寫數(shù)字
                  
                  Graphics2D g 
          = bi.createGraphics();
                  g.setColor(Color.CYAN);
                  g.setFont(
          new Font(null, Font.BOLD, 15));
                  
          //旋轉(zhuǎn)
                  double rot;
                  
                  
          for (int i = 0; i < length; i++) {
                      g.drawString(String.valueOf(r.nextInt(
          9)), bi.getWidth()/4 + i * 15, bi.getHeight()/2);
                      rot 
          = r.nextDouble() * 0.1;
                      
          if(r.nextBoolean())
                          rot 
          = -1 * rot;
                      g.rotate(rot);
                  }

                  
          try {
                      
          // 使用JPEG編碼,輸出到response的輸出流
                      JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(response
                              .getOutputStream());
                      JPEGEncodeParam param 
          = encoder.getDefaultJPEGEncodeParam(bi);
                      param.setQuality(
          1.0ffalse);
                      encoder.setJPEGEncodeParam(param);
                      encoder.encode(bi);
                  } 
          catch (Exception ex) {
                  }
              }
          }
          自己配置一下背景圖片的位置就可以了



           @2008 楊一. 版權(quán)所有. 保留所有權(quán)利

          posted on 2006-09-21 20:13 楊一 閱讀(1440) 評(píng)論(2)  編輯  收藏 所屬分類: Java EE

          評(píng)論

          # 23412 2011-05-12 13:27 12341234

          12341243  回復(fù)  更多評(píng)論   

          # 23412 2011-05-12 13:27 12341234

          123453  回復(fù)  更多評(píng)論   

          <2011年5月>
          24252627282930
          1234567
          891011121314
          15161718192021
          22232425262728
          2930311234

          導(dǎo)航

          公告

          本人在blogjava上發(fā)表的文章及隨筆除特別聲明外均為原創(chuàng)或翻譯,作品受知識(shí)產(chǎn)權(quán)法保護(hù)并被授權(quán)遵從 知識(shí)分享協(xié)議:署名-非商業(yè)性使用-相同方式共享 歡迎轉(zhuǎn)載,請(qǐng)?jiān)谵D(zhuǎn)載時(shí)注明作者姓名(楊一)及出處(www.aygfsteel.com/yangyi)
          /////////////////////////////////////////
          我的訪問者

          常用鏈接

          留言簿(5)

          隨筆分類(55)

          隨筆檔案(55)

          相冊(cè)

          Java

          其他技術(shù)

          生活

          最新隨筆

          搜索

          積分與排名

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          自強(qiáng)不息


          用心 - 珍惜時(shí)間,勇于創(chuàng)造
          主站蜘蛛池模板: 龙泉市| 新闻| 张家口市| 玉林市| 甘洛县| 高邑县| 梓潼县| 陇西县| 林口县| 正蓝旗| 神池县| 榆树市| 通榆县| 阳城县| 安图县| 昭苏县| 奎屯市| 钦州市| 黑龙江省| 丘北县| 武穴市| 抚顺市| 宣武区| 黄石市| SHOW| 江门市| 彰武县| 南昌县| 呼图壁县| 保德县| 鄂伦春自治旗| 岚皋县| 偏关县| 科技| 务川| 台北市| 台东县| 阿合奇县| 宝山区| 泰来县| 基隆市|