Este blog registra la implementación de un código de verificación de imagen en el proyecto. Aunque no es muy complicado, un buen recuerdo no es tan bueno como una pluma mala. ¡Recuerda!
paquete com.zl.util; import java.awt.color; import java.awt.font; import java.awt.graphics; import java.awt.image.bufferedImage; import java.io.fileOutputStream; import java.io.ioException; import java.io.outputstream; import java.util.random; import javax.imageio.imageio; / ** * @author zzc * @Date 6 de noviembre de 2017 * @param * @Desc Generación de código de verificación gráfica * */ public class Verifyutil {// Código de verificación Conjunto de caracteres Private Static Final Char [] chars = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', ',', ',', ',', ',', ',', ',', ',', ',', ',', ',', ',', ',', ',', ',', ',', ',', ',', ',', ',', ',', ',', ',', ',', ',', ',', ',', ',', ',', ',', ',', ' 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'a', 'b', 'c', 'd', ',', ',', ',', ',', ',', ',', ',', ',', ',', ', 'G', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'}; // Número de caracteres static static final int size = 4; // Número de líneas de interferencia Private static final int Lines = 5; // Ancho Private Static Final int Ancho = 80; // Altura estática privada estática int altava = 40; // Tamaño de fuente estática privada final int font_size = 30; /*** Generar código de verificación aleatorio e imagen* objeto [0]: cadena de código de verificación; * Objeto [1]: imagen del código de verificación. */ public static object [] createImage () {StringBuffer sb = new StringBuffer (); // 1. Cree una imagen en blanco BufferedImage Image = New BufferedImage (ancho, altura, bufferedimage.type_int_rgb); // 2. Obtenga el gráfico de pincel de imagen gráfico = image.getgraphics (); // 3. Establezca el color gráfico de color de pincel.setColor (color.light_gray); // 4. Dibuja los gráficos de fondo del rectángulo. Fillrect (0, 0, ancho, altura); // 5. Dibuje caracteres aleatorios Rand Ran = new Random (); for (int i = 0; i <size; i ++) {// Tome el índice de caracteres aleatorio int n = ran.nextint (chars.length); // establecer el color gráfico aleatorio.setColor (getRandomColor ()); // Establecer el tamaño de fuente Graphic.SetFont (nuevo Font (NULL, FONT.BOLD + FONT.ITALIC, FONT_SIZE)); // dibujar caracteres gráfico.drawstring (chars [n] + "", i * ancho/ tamaño, altura * 2/3); // registrar los caracteres sb.append (chars [n]); } // 6. Dibuja la línea de interferencia para (int i = 0; i <líneas; i ++) {// establece color al azar gráfico.setColor (getRandomColor ()); // Color aleatorio Graphic.Drawline (ran.nextint (ancho), ran.nextint (altura), ran.nextint (ancho), ran.nextint (altura)); } // 7. Código de verificación de retorno e imagen return New Object [] {sb.ToString (), imagen}; } / *** Color aleatorio* / public static Color getRandomColor () {Random ran = new Random (); Color color = nuevo color (ran.nextint (256), ran.nextint (256), ran.nextint (256)); color de retorno; } public static void main (string [] args) lanza ioexception {object [] objs = createImage (); BufferedImage Image = (BufferedImage) OBJS [1]; OutputStream OS = nuevo FileOutputStream ("d: /1.png"); Imageio.write (imagen, "png", os); os.close (); }} Capa del controlador
/** * @author ZZC * @date November 6, 2017* @param * @desc Graphic verification code generation method* */ @RequestMapping("/valicode") public void valicode(HttpServletResponse response,HttpSession session) throws Exception{ //Use image tools to generate images//The first parameter is the generated verification code, and the second parameter is the generated image Objeto [] objs = verifyUtil.createeMage (); // almacenar el código de verificación en sessions.SetAttribute ("ImageCode", objs [0]); // emite la imagen al navegador BufferedImage Image = (BufferedImage) OBJS [1]; respuesta.setContentType ("Imagen/PNG"); OutputStream OS = Response.getOutputStream (); Imageio.write (imagen, "png", os); }Resultados de ejecución:
Lo anterior es todo el contenido de este artículo. Espero que sea útil para el aprendizaje de todos y espero que todos apoyen más a Wulin.com.