Este blog registra a implementação de um código de verificação de imagem no projeto. Embora não seja muito complicado, uma boa memória não é tão boa quanto uma caneta ruim. Lembre -se!
pacote com.zl.util; importar java.awt.color; importar java.awt.font; importar java.awt.graphics; importar java.awt.image.bufferiMage; importar java.io.fileOutputStream; importar java.io.ioException; importar java.io.OutputStream; importar java.util.random; importar javax.imageio.imageio; /** * @author ZZC * @date November 6, 2017* @param * @desc Graphic verification code generation* */ public class VerifyUtil { // Verification code character set private static final char[] chars = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', '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', 'E', 'F', 'G', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'}; // Número de caracteres de caracteres estática privada Int Tamanho = 4; // número de linhas de interferência private estático final int linhas = 5; // largura privada estática final int width = 80; // altura privada estática final int altura = 40; // Tamanho da fonte private estática final int font_size = 30; /*** Gere código de verificação aleatória e imagem* Objeto [0]: Código de verificação string; * Objeto [1]: imagem do código de verificação. */ public static objeto [] createImage () {stringBuffer sb = new StringBuffer (); // 1. Crie uma imagem em branco bufferImage imagem = new bufferiMage (largura, altura, bufferImage.type_int_rgb); // 2. Obtenha a imagem gráfica gráfica = image.getgraphics (); // 3. Defina os gráficos de cores do pincel.SetColor (color.light_gray); // 4. Desenhe os gráficos de fundo do retângulo.FillRect (0, 0, largura, altura); // 5. Desenhe caracteres aleatórios aleatórios RAN = novo aleatório (); for (int i = 0; i <tamanho; i ++) {// pegue o índice de caracteres aleatório int n = ran.nextint (chars.length); // Defina o Random Color Graphic.SetColor (getRandomColor ()); // Defina o tamanho da fonte Graphic.setFont (nova fonte (NULL, FONT.BOLD + FONT.ITALIC, FONT_SIZE)); // desenha o caractere gráfico.drawString (chars [n] + "", i * largura/ tamanho, altura * 2/3); // registra caracteres sb.append (chars [n]); } // 6. Desenhe a linha de interferência para (int i = 0; i <linhas; i ++) {// Definir Random Color Graphic.SetColor (getRandomColor ()); // Random Color Graphic.Drawline (ran.nextint (largura), ran.nextint (altura), ran.nextint (largura), ran.nextint (altura)); } // 7. Código de verificação de retorno e imagem retorna novo objeto [] {sb.toString (), imagem}; } / *** cor aleatória* / public static color getrandomcolor () {random ran = new Random (); Cor cor = nova cor (ran.nextint (256), ran.nextint (256), ran.nextint (256)); cor de retorno; } public static void main (string [] args) lança ioexception {object [] objs = createImage (); Imagem bufferiMage = (bufferImage) objs [1]; OutputStream OS = new FileOutputStream ("d: /1.png"); Imageio.write (imagem, "png", os); os.close (); }} Camada do 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.createImage (); // armazenar o código de verificação em session.setAttribute ("imageCode", objs [0]); // emitir a imagem para o navegador bufferImage imagem = (bufferImage) objs [1]; Response.setContentType ("Image/png"); OutputStream OS = Response.getOutputStream (); Imageio.write (imagem, "png", os); }Resultados em execução:
O exposto acima é todo o conteúdo deste artigo. Espero que seja útil para o aprendizado de todos e espero que todos apoiem mais o wulin.com.