Este artículo comparte dos ejemplos para ti, creo que te gustará.
Ejemplo 1: Genere al azar las imágenes del código de verificación y las genere como un archivo PNG
Imagen de reproducción:
import java.awt.color; import java.awt.font; import java.awt.graphics; import java.awt.image.bufferedimage; import java.io.file; import java.io.io.ioexception; import java.util.random; import javax.imageio.imageio; clase pública mytest10 {public static random Random = new Random (); public static int r (int min, int max) {int num = 0; num = random.nextint (max-min)+min; num de devolución; } public static void main (string [] args) lanza ioexception {// toDo método generado automático // crea una imagen int w = 120; int h = 50; BufferedImage img = new BufferedImage (W, H, BufferedImage.Type_int_Rgb); // dibujar un rectángulo en la imagen como gráficos de fondo g = img.getgraphics (); G.SetColor (nuevo color (R (50,250), R (50,250), R (50,250))); G.Fillrect (0, 0, W, H); Cadena str = "aqzxswedcfrvgtbhyujklp23456789"; para (int i = 0; i <4; i ++) {g.setColor (nuevo color (R (50,180), R (50,180), R (50,180))); G.SetFont (nueva fuente ("Bold", Font.Plain, 40)); char c = str.charat (r (0, str.length ())); G.DrawString (String.ValueOf (C), 10+I*30, R (H-30, H)); } // dibujar una línea aleatoria para (int i = 0; i <25; i ++) {g.setColor (nuevo color (r (50,180), r (50,180), r (50,180))); G.Drawline (R (0, W), R (0, H), R (0, W), R (0, H)); } // emite las imágenes creadas en la memoria al archivo Archivo de archivo = nuevo archivo ("vcode.png"); Imageio.write (img, "png", archivo); System.out.println ("salida de imagen completa"); }} Ejemplo 2: Java genera códigos de verificación de personajes chinos comúnmente utilizados
import java.awt.color; import java.awt.font; import java.awt.graphics; import java.awt.graphics2d; import java.awt.image.bufferedImage; import java.io.ioexception; import java.util.random; import javax.image.Imageio; import javax. javax.servlet.http.httpservlet; import javax.servlet.http.httpservletRequest; import javax.servlet.http.httpservletResponse;/*** Generar caracteres chinos aleatorios ***/clase pública Drawimage se extiende httpservlet {público intencional estaticar final = 120; público; doget (solicitud de httpservletRequest, httpServletResponse respuesta) arroja servletException, ioexception {this.dopost (solicitud, respuesta);} public void dopost (httpservletRequest solicitud, httpservletreponse respuesta) lanza servletException, ioexception, ioexception, ioexception, ioexception {request.setcharacterEncoding ("utf-8"); respuesta.setContentType ("text/html; charset = utf-8"); // crea caché bufferedimage bi = new BufferedImage (width, Height, bufferedimage.type_int_rgb); // Get Canvasvas Graphics g = bi.getgraphics (); SEDBACKGROUND (g); // Establezca el borde setBorder (g); // Dibuja la línea de interferencia Dibuja (g); // Escriba la cadena de número aleatorio Aandor Random = DrawRandomNum ((Graphics2D) G); // Almacene los caracteres chinos aleatorios en la solicitud de sesión.getSession (). SetAttribute ("CHECKCODE", Random); // Response.SetContentType ("Image/JPeg"); // El navegador de control de cabello no cachome Response.SetDateHeader ("expries", -1); Response.Setheader ("Cache-Control", "No-Cache"); Respuesta.Setheader ("Pragma", "No-Cache"); // Escribir la imagen a la imagen de Browser. respuesta.getOutputStream ());}/*** Establezca color de fondo ** @param g*/private void sendbackground (gráficos g) {// establecer color g.setColor (color.white); // llena el área g.fillrect (0, 0, width, altura);}/*** Estable g.setColor (color.blue); // Área de borde G.Drawrect (1, 1, ancho - 2, altura - 2);}/*** Dibujar líneas aleatorias ** @param g*/private void drawrandomline (gráficos g) {// establecer color g.setcolor (color.green); // establece el número de líneas y dibujan líneas para (int i = 0; i <5; i ++) new Random (). NextInt (Width); int y1 = new Random (). NextInt (Height); int x2 = new Random (). NextInt (Width); int y2 = new Random (). NextInt (Height); G.Drawline (x1, y1, x2, y2);}}/*** Caracteres chinos ** @param g* @return*/private String dibujo {StringBuffer sb = new StringBuffer (); // Establecer color G.SetColor (color.red); // set font g.setFont (nuevo font ("宋体", font.bold, 20)); // "/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/U4E0B/UU 770B/U5929/U65F6/U8FC7/U51FA/U5C0F/U4E48/U8D77/U4F60/U90FD/U628A/U597D/U8FD8/U591A/U6CA1/U4 E3A/U53C8/U53EF/U5BB6/U5B66/U53EA/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/UU4F5C/U5F00/U800C/U5DF1/U4E9B/UU 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/U5B8C /U5374/U7AD9/U4EE3/U5458/U673A/U66F4/U4E5D/U60A8/U6BCF/U98CE/U7EA7/U8DDF/U7B11/U554A/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/U5EF 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/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/U544A/U754C/U62C9/U540D/U544 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/U833DC/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/U57C 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/UUU 7CFB/U4EE4/U8DF3/U975E/U4F55/U725B/U53D6/U5165/U5CB8/U6562/U6389/U5FFD/U79CD/U88C5/U9876/U6 025/U6797/U505C/U606F/U53E5/U533A/U8863/U822C/U62A5/U53F6/U538B/U6162/U53D4/U80CC/U7EC6 "; INT x = 5; // Contador de palabras de control para (int i = 0; i <4; i ++) {// Establezca el ángulo de rotación de fuente int grado = new Random (). NextInt () % 30; // Intercept String Ch = Base.Charat (new Random (). NextInt (Base.LLength ())+""; Sb.append (CH); // Angleging G.Rotate (Grado (Grado * Distre (Grado (Grado (Grado * 20); G.DrawString (CH, X, 20); // ángulo invertido g.rotate (-degree * Math.pi/ 180, x, 20); x += 30;} return sb.ToString ();}}Los anteriores son los códigos relevantes para los códigos de verificación de imagen de Java y los códigos de verificación de caracteres chinos. Espero que sea útil para el aprendizaje de todos.