Greedy的工作室

          posts - 23,comments - 7,trackbacks - 0
          import java.io.*;
          import java.util.*;
          import com.sun.image.codec.jpeg.*;
          import javax.servlet.*;
          import javax.servlet.http.*;
          import java.awt.*;
          import java.awt.image.*;

          public class ShowImage extends HttpServlet {

          private Font mFont=new Font("Times New Roman", Font.PLAIN,18);//設置字體

          //處理post
          public void doPost(HttpServletRequest request,HttpServletResponse response)
          throws ServletException,IOException {
            doGet(request,response);
          }

          public void doGet(HttpServletRequest request,HttpServletResponse response)
              throws ServletException,IOException {
          //取得一個1000-9999的隨機數


              HttpSession session=request.getSession(false);
              //session.setAttribute("getImg",s);
              response.setContentType("image/gif");
              response.setHeader("Pragma","No-cache");
              response.setHeader("Cache-Control","no-cache");
              response.setDateHeader("Expires", 0);
              int width=60,height=20;

              ServletOutputStream out=response.getOutputStream();
              BufferedImage image=new BufferedImage(width,height,BufferedImage.TYPE_INT_RGB); //設置圖片大小的
              Graphics gra=image.getGraphics();
              Random random=new Random();

              gra.setColor(getRandColor(200,250));    //設置背景色
              gra.fillRect(0,0,width,height);

              gra.setColor(Color.black); //設置字體色
              gra.setFont(mFont);

             /* gra.setColor(new Color(0));
              gra.drawRect(0,0,width-1,height-1);*/


              // 隨機產生155條干擾線,使圖象中的認證碼不易被其它程序探測到
              gra.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);
               gra.drawLine(x,y,x+xl,y+yl);
              }

              // 取隨機產生的認證碼(4位數字)
              String sRand="";
              for (int i=0;i<4;i++){
                 String rand=String.valueOf(random.nextInt(10));
                 sRand+=rand;
                  // 將認證碼顯示到圖象中
                  gra.setColor(new Color(20+random.nextInt(110),20+random.nextInt(110),20+random.nextInt(110)));//調用函數出來的顏色相同,可能是因為種子太接近,所以只能直接生成
                  gra.drawString(rand,13*i+6,16);
              }
                  //System.out.println("showimage="+sRand);
                  session.setAttribute("getImg",sRand);
                  JPEGImageEncoder encoder=JPEGCodec.createJPEGEncoder(out);
                  encoder.encode(image);
                  out.close();

          }

            static 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);
            }

          }
          posted on 2008-06-27 10:44 greedy 閱讀(245) 評論(0)  編輯  收藏 所屬分類: Java技術
          主站蜘蛛池模板: 衡南县| 隆安县| 察隅县| 吴忠市| 营口市| 原阳县| 宜兰市| 汝州市| 耿马| 贵溪市| 紫金县| 玛纳斯县| 鄂尔多斯市| 东港市| 调兵山市| 资溪县| 林州市| 怀宁县| 平原县| 安吉县| 新疆| 墨脱县| 旺苍县| 合肥市| 朔州市| 六盘水市| 东阿县| 叶城县| 伊川县| 灵寿县| 云龙县| 台州市| 民乐县| 益阳市| 轮台县| 翁牛特旗| 韶关市| 六枝特区| 克什克腾旗| 南丹县| 福海县|