日期:2014-05-20 浏览次数:20701 次
import java.awt.Color; import java.awt.Font; import java.awt.Graphics2D; import java.awt.image.BufferedImage; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.sun.image.codec.jpeg.JPEGCodec; import com.sun.image.codec.jpeg.JPEGImageEncoder; public class Indentify extends HttpServlet { /** * */ private static final long serialVersionUID = -5192810637835083466L; private static final char[] chars = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'g', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'G', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z' }; public static String getString() { StringBuffer sb = new StringBuffer(); for (int i = 0; i < 4; i++) { sb.append(chars[(int) (Math.random() * 62)]); } return new String(sb); } public static Color getColor() { return new Color((int)(Math.random() * 256) , (int)(Math.random() * 256) , (int)(Math.random() * 256)); } public static Color getReverseColor(Color c) { return new Color(255 - c.getRed(), 255 - c.getGreen(), 255 - c .getBlue()); } public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doPost(request, response); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("image/jpeg"); String str = getString(); request.getSession(true).setAttribute("vertificationcode", str); int width = 70; int height = 30; Color color = getColor(); Color reverseColor = getReverseColor(color); BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); Graphics2D g = image.createGraphics(); g.setFont(new Font(Font.SANS_SERIF, Font.BOLD, 16)); g.setColor(color); g.fillRect(0, 0, width, height); g.setColor(reverseColor); g.drawString(str, 18, 20); for (int i = 0, n = (int) Math.random() * 100; i < n; i++) { g.drawRect((int) Math.random() * width, (int) Math.random() * height, 1, 1); } ServletOutputStream outputStream = response.getOutputStream(); JPEGImageEncoder encode = JPEGCodec.createJPEGEncoder(outputStream); encode.encode(image); outputStream.flush(); } }