⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 imagecode.java

📁 java相关的j2me,j2se的一些相关资料
💻 JAVA
字号:
package cn.sh.web.vcode;
      
import java.awt.image.*;
import java.io.*;
import java.awt.*;
import java.util.Random;
import javax.imageio.ImageIO;
import javax.servlet.*;
import javax.servlet.http.*;

public class ImageCode extends HttpServlet {
    private static String code_str[]={"0","1","2","3","4","5","6","7","8","9",    "a","b","c","d","e","f","g","h","i","j","k","m","n","o","p","q","r","s","t","u","v","w","x","y","z",    "A","B","C","D","E","F","G","H","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"};
    
    public static String getOneStr(){
        Random random=new Random();   
        int i = random.nextInt(60);
        while((i<0)||(i>60)) i = random.nextInt(60);
        return code_str[i];
    }
    
    public static Color getColor(int fc,int bc){ //需要将fc和bc设置在0~255之间
        Random random=new Random();    int nextint = 9;
        if(fc>bc){nextint=fc-bc;} else if(bc>fc){nextint=bc-fc;}
        int r=fc+random.nextInt(nextint);
        int g=fc+random.nextInt(nextint);
        int b=fc+random.nextInt(nextint);
////	/因为Color对象的r g b只能在0到255之间,所以进行此处理.
        if(r>=255){r=200;} else if(r<=0){r=201;}
        if(g>=255){g=190;} else if(g<=0){g=191;}
        if(b>=255){b=180;} else if(b<0){b=181;}
        return new Color(r,g,b);
    }
    
    public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String   session_str=""; //////用于取得验证码的值,以便设置验证码
        String   str="";//////辅助取得验证码的值
        ServletOutputStream out = response.getOutputStream();//////用于图像输出.
        BufferedImage image = new BufferedImage(60,25,BufferedImage.TYPE_INT_BGR);
        Graphics g = image.getGraphics();
        g.setColor(getColor(187,221)); /////设置图像的背景颜色范围
        g.fillRect(0,0,120,25);        /////使用已经设置的颜色填充图像
        g.setFont(new Font("",Font.PLAIN,18)); //////设置字体
        for(int i=0;i<4;i++) {
            str=getOneStr();
            g.setColor(getColor(50,121));  ////////设计颜色
            g.drawString(str,15*i+2,20);///////使用上下文颜色绘制字符
            session_str=session_str+str; //////取得验证码
        }
        request.getSession().setAttribute("longin_image_vcode",session_str);
        //g.dispose();撤消该图形的上下文并释放它所使用的任何系统资源,在此不能使用此,
        //否则刷新页面会导致session_str值在变化,而图像上的文字不随之相应变化.
        ImageIO.write(image,"JPEG",out);
    }
    
    public static void main(String args[]) throws FileNotFoundException, IOException{
        for(int j=0;j<20;j++){            
            String   session_str=""; //////用于取得验证码的值,以便设置验证码
            String   str=""; //////辅助取得验证码的值
            BufferedImage image = new BufferedImage(60,25,BufferedImage.TYPE_INT_BGR);
            Graphics g = image.getGraphics();
            g.setColor(getColor(187,221)); /////设置图像的背景颜色范围
            g.fillRect(0,0,120,25);        /////使用已经设置的颜色填充图像
            g.setFont(new Font("",Font.PLAIN,18)); //////设置字体
            for(int i=0;i<4;i++) {
                str=getOneStr();
                g.setColor(getColor(50,121));  ////////设计颜色
                g.drawString(str,15*i+2,20);///////使用上下文颜色绘制字符
                session_str=session_str+str; //////取得验证码
            }
            FileOutputStream out = new FileOutputStream("g:\\"+session_str+".jpg");  //用于直接将图片写入磁盘
            ImageIO.write(image,"JPEG",out); 
        }
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -