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);//設(shè)置字體

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

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


              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); //設(shè)置圖片大小的
              Graphics gra=image.getGraphics();
              Random random=new Random();

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

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

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


              // 隨機(jī)產(chǎn)生155條干擾線,使圖象中的認(rèn)證碼不易被其它程序探測(cè)到
              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);
              }

              // 取隨機(jī)產(chǎn)生的認(rèn)證碼(4位數(shù)字)
              String sRand="";
              for (int i=0;i<4;i++){
                 String rand=String.valueOf(random.nextInt(10));
                 sRand+=rand;
                  // 將認(rèn)證碼顯示到圖象中
                  gra.setColor(new Color(20+random.nextInt(110),20+random.nextInt(110),20+random.nextInt(110)));//調(diào)用函數(shù)出來的顏色相同,可能是因?yàn)榉N子太接近,所以只能直接生成
                  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){//給定范圍獲得隨機(jī)顏色
                   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 閱讀(246) 評(píng)論(0)  編輯  收藏 所屬分類: Java技術(shù)
          主站蜘蛛池模板: 昭通市| 儋州市| 南开区| 胶南市| 政和县| 临夏市| 开原市| 黄平县| 曲周县| 北海市| 黔东| 门头沟区| 双城市| 湟源县| 通海县| 新蔡县| 油尖旺区| 临安市| 云林县| 南郑县| 枣阳市| 万年县| 凌源市| 简阳市| 洪洞县| 文山县| 桦川县| 崇州市| 彭泽县| 班戈县| 紫云| 凤台县| 丰都县| 延边| 柳河县| 闽侯县| 石台县| 光泽县| 阳信县| 鹤山市| 随州市|