Este artigo compartilha dois exemplos para você, acredito que você vai gostar.
Exemplo 1: gerar aleatoriamente o código de verificação imagens e produzi -las como um arquivo PNG
Imagem de reprodução:
importar java.awt.color; importar java.awt.font; importar java.awt.graphics; importar java.awt.image.bufferedimage; importar java.io.file; importar java.io.ioException; importar java.util.random; importar javax.imageio.imageio; classe pública mytest10 {public static aleatom = new Random (); public static int r (int min, int max) {int num = 0; NUM = Random.NextInt (MAX-MIN)+min; retornar num; } public static void main (string [] args) lança IoException {// TODO Método Gerado automático Stub // Crie uma imagem int w = 120; int h = 50; BufferImage img = new bufferImage (w, h, bufferImage.type_int_rgb); // desenha um retângulo na imagem como gráficos de fundo g = img.getgraphics (); g.setColor (nova cor (r (50.250), r (50.250), r (50.250))); G.FillRect (0, 0, W, H); String str = "aqzxswedcfrvgtbhyujklp23456789"; for (int i = 0; i <4; i ++) {g.setColor (nova cor (r (50.180), r (50.180), r (50.180))); G.SetFont (New Font ("Bold", Font.Plain, 40)); char c = str.charat (r (0, str.Length ())); G.DrawString (String.ValueOf (C), 10+I*30, R (H-30, H)); } // desenha uma linha aleatória para (int i = 0; i <25; i ++) {g.setColor (nova cor (r (50.180), r (50.180), r (50.180))); G.Drawline (R (0, W), R (0, H), R (0, W), R (0, H)); } // em saída as imagens criadas na memória para o arquivo de arquivo de arquivo = novo arquivo ("vcode.png"); Imageio.write (img, "png", arquivo); System.out.println ("saída de imagem concluída"); }} Exemplo 2: Java gera aleatoriamente códigos de verificação de caracteres chineses comumente usados
importar java.awt.color; importar java.awt.font; importar java.awt.graphics; importar java.awt.graphics2d; importar java.awt.image.bufferImage; importação java.io.ioexception; importação.util.random; importação; javax.servlet.servletexception; importar javax.servlet.http.httpServlet; importar javax.servlet.http.httpServletRequest; import javax.Servlet.http.htpSertLeovendleTensPet; 120; public estático final int altura = 30; public void Doget (solicitação httpServletRequest, resposta httpServletResponse) lança servletexception, ioexception {this.DoPost (request, resposta);} public void DoPost (httpSleTrequest Soldem, hTTSensoSpessotensonsonsonsonsonsonsonsonsensonsonsonsonsensonsonsensonsonsensonsensonsensonsonsensonsonsensonsonsensonsonsensonsonsensonsonsensonsonsensonsensonsonsensonsonsensonsonsensonsonsensonsonsensonsonsensonsonsensonsensonsonsensonsonsex). {request.setcharacterencoding ("utf-8"); resposta.setContentType ("text/html; charset = utf-8"); // crie cache bufferImage bi = new bufferImage (largura, altura, bufferImage.tyTe_int_rgb); // get canvasics, gatra, girthImage.TyTe_Int_RGB); setbackground (G); // Defina o Setborder de Fronteira (G); // Desenhe a linha de interferência Drawrandomline (G); // Escreva a String de Número Random Random = Drawrandomnum ((Graphics2d) G); // Armazenar os caracteres aleatórios na sessão de sessão. Response.setContentType ("Image/jpeg"); // O navegador de controle de cabelo não cache Response.SetDateHeader ("Expries", -1); Response.setheader ("Cache-Control", "sem cache"); Respons.Sethead (Pragma "," no-cache "); Response.getOutputStream ());}/*** Defina a cor do fundo ** @param g*/private void sessionground (gráficos g) {// Definir cores g.setColor (color.white); // preencher a área g.fillRect (0, 0, largura, altura);}/*** set borda ** @Param g*/Sett (0, 0, 0, 0, largura); g.setColor (color.blue); // Área de borda G.DrawRect (1, 1, largura - 2, altura - 2);}/*** Desenhe linhas aleatórias ** @param g*/private void drawrandomline (5 graphics g) {// Definir cor g.setColor (cor.Green); // set o número de linhas e o número de linhas e o número de linhas e o número de linhas e os linhas de linha 1; Random (). NextInt (largura); int y1 = new Random (). NextInt (altura); int x2 = new Random (). NextInt (largura); int y2 = new Random (). NextInt (altura); g.drawline (x1, y1, x2, y2);}/*** Draw Randomon caracteres ** @param g ** @strort* ^ @strorn @strorn @strort @strorn @strorn @strorn @strort strort*; {StringBuffer sb = new StringBuffer (); // Definir cores G.SetColor (color.red); // Definir font g.setFont (new Font ("宋体", font.bold, 20)); // Prepare os caracteres chineses comumente usados Base String = "/u7684/u4e00/u4e86/u662f/u6211/u4e0d/u5728/u4eba/u4eec/u6709/u6765/u4ed6/u8fd9/u4e0a/u7740/ U4E2A/U5730/U5230/U5927/U91CC/U8BF4/U5C31/U53BB/U5B50/U5F97/U4E5F/U548C/U90A3/U8981/U4EDO/UU 770B/U5929/U65F6/U8FC7/U51FA/U5C0F/U4E48/U8D77/U4F60/U90FD/U628A/U597D/U8FD8/U591A/U6CA1/U4 e3a/u53c8/u533ef/u5bb6/u5b66/u53eae/u4ee5/u4e3b/u4f1a/u6837/u5e74/u60f3/u751f/u540c/u8001/u4e2 d/u5341/u4ece/u81ea/u9762/u524d/u5934/u9053/u5b83/u540e/u7136/u8d70/u5f88/u50cf/u89c1/u4e24/u7528/u5979/u56fd/u 52A8/U8FDB/U6210/U56DE/U4EC0/U8FB9/U4F5C/U5BF9/U5F00/U800C/U5DF1/U4E9B/UU4E9B/UU4F/U5F00/U800C/U5DF1 73B0/U5C71/U6C11/U5019/U7ECF/U53D1/U5DE5/U5411/U4E8B/U547D/U7ED9/U957F/U6C34/U51E0/U4E49/U4 e09/u58f0/u4e8e/u9ad8/u624b/u77e5/u7406/u773c/u5fd7/u70b9/u5fc3/u6218/u4e8c/u95ee/u4f46/u8ea b/u65b9/u5b9e/u5403/u505a/u53eb/u5f53/u4f4f/u542c/u9769/u6253/u 5462/u771f/u5168/u624d/u56db/u5df2/u6240/u654c/u4e4b/u6700/u514 9/u4ea7/u60c5/u8def/u5206/u603b/u6761/u767d/u8bdd/u4e1c/uu4e1c/ uu4ea7/u60c5/u8def/u5206/u603b/u6761/u767d/u8bdd/u4e1c/uu4e1c/u 5E2D/U6B21/U4EB2/U5982/U88AB/U82B1/U53E3/U653E/U513F/U5E38/U6C14/U4E94/U7B2C/U4F7F/U5199/U5 19B/U5427/U6587/U8FD0/U518D/U679C/U600E/U5B9A/U8BB8/U5FEB/U660E/U884C/U56E0/U522B/U98DE/U591 6/u6811/u7269/u6d3b/u90e8/u95e8/u65e0/u5f80/u8239/u671b/u65b0/u5e26/u961f/u5148/u529b/u5b8 /u5374/u7ad9/u4ee3/u5458/u673a/u66f4/u4e5d/u60a8/u6bcf/u98ce/u7ea7/u8ddf/u7b11/u54a/u5b69/u 4E07/U5C11/U76F4/U610F/U591C/U6BD4/U9636/U8FDE/U8F66/U91CD/U4FBF/U6597/U9A6C/U54EA/U5316/U5 92a/u6307/u53d8/u793e/u4f3c/u58eb/u8005/u5e72/u77f3/u6ee1/u65e5/u51b3/u767e/u539f/u62ff/u7fa 4/U7A76/U5404/U516D/U672C/U601D/U89E3/U7ACB/U6CB3/U6751/U516B/U96BE/U65E9/U8BBA/U5417/U6839 /u5171/u8ba9/u76f8/u7814/u4eca/u5176/u4e66/u5750/u63a5/u5e94/u5173/u4fe1/u89c9/u6b65/u53cd/u 5904/u8bb0/u5c06/u5343/u627e/u4e89/u9886/u6216/u5e08/u7ed3/u5757/u8dd1/u8c01/u8349/u8d8a/u5 b57/u52a0/u811a/u7d27/u7231/u7b49/u4e60/u9635/u6015/u6708/u9752/u534a/u706b/u6cd5/u9898/u534ef a/u8d76/u4f4d/u5531/u6d77/u4e03/u5973/u4efb/u4ef6/u611f/u51c6/u5f20/u56e2/u5c4b/u79bb/u8272/u8138/u7247/u79d1/u50 12/u775b/u5229/u4e16/u521a/u4e14/u7531/u9001/u5207/u661f/u5bfc/u665a/uu4e14/u7531/u9001/u5207/u661f/u5bfc/u665a/uu 8868/u591f/u6574/u8ba4/u54cd/u96ea/u6d41/u672a/u573a/u8be5/u5e76/u5e95/u6df1/u523b/u5e73/u4 f1f/u5fd9/u63d0/u786e/u8fd1/u4eae/u8f7b/u8bb2/u519c/u53e4/u9ed1/u5444a/u754c/u62c9/u540d/u5444 0/u571f/u6e05/u9633/u7167/u529e/u53f2/u6539/u5386/u8f6c/u753b/u9020/u5634/u6b64/u6cbb/u5317/ u5fc5/u670d/u96e8/u7a7f/u5185/u8bc6/u9a8c/u4f20/u4e1a/u83dc/u722c/u7761/u5174/u5f62/u91cf/uu 54B1/U89C2/U82E6/U4F53/U4F17/U901A/U51B2/U5408/U7834/U53CB/U5EA6/U672F/U996D/U516C/U65C1/U6 23f/u6781/u5357/u67aa/u8bfb/u6c99/u5c81/u7ebf/u91ce/u575a/u7a7a/u6536/u7b97/u81f3/u653f/u577 e/u52b3/u843d/u94b1/u7279/u56f4/u5f1f/u80dc/u6559/u70ed/u5c55/u5305/u6b4c/u7c7b/u6e10/u5f3a/u6570/u4e61/u54 7c/u6027/u97f3/u7b54/u54e5/u9645/u65e7/u795e/u5ea7/u7ae0/u5e2e/u5566/u53d7/uu5ea7/u7ae0/u5e2e/u5566/u53d7/uu 7cfb/u4ee4/u8df3/u975e/u4f55/u725b/u53d6/u5165/u5cb8/u6562/u6389/u5ffd/u79cd/u88c5/u9876/u6 025/u6797/u505c/u606f/u53e5/u533a/u8863/u8222c/u62a5/u53f6/u538b/u6162/u53d4/u80cc/u7ec6 "; int x = 5; // Controle de contagem de palavras para (int i = 0; i <4; i ++) {// Defina o ângulo de rotação da fonte int graus = new Random (). nextInt () % 30; // interceptar caracteres chineses string ch = base.Charat (new Random (). NextInt (Base.length () gin)+""; SB.Append (Math); 20); G.DrawString (CH, X, 20); // ângulo reverso g.rotate (-Degree * Math.pi/ 180, x, 20); x += 30;} Retorno sb.tostring ();}}O exposto acima são os códigos relevantes para os códigos de verificação de imagem de geração de Java e códigos de verificação de caracteres chineses. Espero que seja útil para o aprendizado de todos.