La copia del código es la siguiente:
paquete com.sanrong;
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.imageio.imageio;
import javax.servlet.servletException;
import javax.servlet.http.httpservlet;
import javax.servlet.http.httpservletRequest;
import javax.servlet.http.httpservletResponse;
/**
* Crear código de verificación de imágenes
* Uso de API --- BufferedImage
* @Author SSA
*/
Public Class Test4Pic extiende httpservlet {
// Defina la longitud y el ancho de la constante
Private static final int width = 130;
Private estático final int altura = 30;
Public void doget (HTTPServletRequest Solicitud, respuesta httpservletResponse)
Lanza ServletException, ioexception {
// Obtenga un contenedor de fondo Este método devuelve un Graphics2D, pero está aquí para la compatibilidad hacia atrás.
Bufferedimage imagen = nueva bufferedimage (ancho, altura, bufferedimage.type_int_rgb);
// Cree un Graphics2D, que se puede usar para dibujar en esta BufferedImage.
Gráficos gráficos = image.getgraphics ();
// establecer fondo
Setbackground (gráficos);
// establecer el borde
SetBorder (gráficos);
// dibujar una línea aleatoria
drawRandomLine (gráficos);
// dibujar un número aleatorio
drawrandomnum ((Graphics2d) Graphics);
// Notificar que el navegador devuelve la imagen para que el tipo de memeType sea consulta en la configuración de Tomcat.
respuesta.setContentType ("Image/jpeg");
ImageIO.Write (Image, "JPG", Response.getOutputStream ());
}
Private void drawrandomnum (gráficos gráficos2D) {
// Escribir números aleatorios
Graphics.setColor (color.blue);
Graphics.setFont (nueva fuente ("宋体", font.bold, 20));
// Pero hay muchas palabras raras, que deben filtrarse y seleccionar chinos comunes
Cadena base="/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/U 4E0B/U770B/U5929/U65F6/U8FC7/U51FA/U5C0F/U4E48/U8D77/U4F60/U90F 53ea/u4ee5/u4e3b/u4f1a/ U6837/U5E74/U60F3/U751F/U540C/U800 1/U4E2D/U5341/U4ECE/U81EA/U9762/U524D/U5934/U9053/U5B83/U540E/U /U6210/U56DE/U4EC0/ U8FB9/U4F5C/U5BF9/U5F00/U800C/U5DF1/U 4E9B/U73B0/U5C71/U6C11/U5019/U7ECF/U53D1/U5DE5/U5411/U4E8B/U547D/ /U7406/U773C/U5FD7/ U70B9/U5FC3/U6218/U4E8C/U95EE/U4F4 6/u8eab/u65b9/u5b9e/u5403/u505a/u53eb/u5f53/u4f4f/u542c/u9769/u6253/u5462/u771f/u5168/u624d/u56db/u5df2/u6240/u654c/u4e4b/u6700/u5149/u4ea7/u60c5/ U8DEF/U5206/U603B/U6761/U767D/U8BDD/ U4E1C/U5E2D/U6B21/U4EB2/U5982/U88AB/U82B1/U53E3/U653E/U513F/U5 /U679C/U600E/U5B9A/U8BB8/ U5FEB/U660E/U884C/U56E0/U522B/U98 de/u5916/u6811/u7269/u6d3b/u90e8/u95e8/u65e0/u5f80/u8239/u671b/u 65b0/u5e26/u961f/u5148/u529b/u5b8c/u5374/u7ad9/u6e3/u6e3/u6e3/u6e3/u6e3/u6e3/u6e3 /U66F4/U4E5D/U60A8/ U6BCF/U98CE/U7EA7/U8DDF/U7B11/U554A/ U5B69/U4E07/U5C11/U76F4/U610F/U591C/U6BD4/U9636/U8FDE/U8F66/U91C 8EB/U8005/U5E72/U77F3/ U6EE1/U65E5/U51B3/U767E/U539F/U62 ff/u7fa4/u7a76/u5404/u516d/u672c/u601d/u89e3/u7acb/u6cb3/u6751/u516b/u96be/u65e9/u8ba/u5417/u6839/u5171/u76/u76fa/u76fafa /U5176/U4E66/U5750/ U63A5/U5E94/U5173/U4FE1/U89C9/U6B65 /U53CD/U5904/U8BB0/U5C06/U5343/U627E/U4E89/U9886/U6216/U5E08/U7 /U7B49/U4E60/U9635/U6015 /U6708/U9752/U534A/U706B/U6CD5/U9 898/u5efa/u8d76/u4f4d/u5531/u6d77/u4e03/u5973/u4efb/u4ef6/u611f/u51c6/u5f20/u56e2/u5c4b/u79bb/u8272/u8138/u7247/u79d1/u501/u79d1/u79d1/u79d1/u79d1/u79d1/u79d1/u751/u501/u501/u79d1/u79d1/u79d1/u79d1/u751/u501/u5t /U5229/U4E16/U521A/ U4E14/U7531/U9001/U5207/U661F/U5BFC /U665A/U8868/U591F/U6574/U8BA4/U54CD/U96EA/U6D41/U672A/U573A/U8 U4EAE/U8F7B/U8BB2/U519C /U53E4/U9ED1/U544A/U754C/U62C9/U5 40D/U5440/U571F/U6E05/U9633/U7167/U529E/U53F2/U6539/U5386/U8F6C/U753B/U9020/U5634/U6B64/U6CBB/U5317/U5FC5/U670D 5185/U8BC6/U9A8C/U4F20/ U4E1A/U83DC/U722C/U7761/U5174/U5F6 2/U91CF/U54B1/U89C2/U82E6/U4F53/U4F17/U901A/U51B2/U5408/U7834/ FB/U6C99/U5C81/U7EBF/ U91CE/U575A/U7A7A/U6536/U7B97/U81F3/U 653F/U57CE/U52B3/U843D/U94B1/U7279/U56F4/U5F1F/U80DC/U6559/U70ED/U5C55/U5305/U6B4C/U7C7B/U6E10/U5F3A/U6570/U4E61/U6B4C/U7C7B/U6E10/U5F3A/U6570/U4E61 7F3/U7B54/U54E5/U9645/ U65E7/U795E/U5EA7/U7AE0/U5E2E/U556 6/u53d7/u7cfb/u4ee4/u8df3/u975e/u4f55/u725b/u53d6/u5165/u5cb8/u 6562/u6389/u5ffd/u79cd/u88c5/u9876/u6025/u6797/u60 /U533A/U8863/U822C/ U62A5/U53F6/U538B/U6162/U53D4/U80CC ";
int x = 10;
para (int i = 0; i <4; i ++) {
// Obtener cuatro caracteres chinos al azar. Intervalo Unicode de caracteres chinos: [/u4e00-/u9fa5]
Cadena ch = base.charat (new Random (). NextInt (base.length ())+"";
// Establezca el ángulo de rotación 0-30 grados (dividido por 30, el resto no será mayor que 30)
int grado = new Random (). NextInt ()%30;
// El ángulo de rotación del texto*3.14/180 = radian
Graphics.rotate (Grado*Math.pi/180, x, 23);
Graphics.DrawString (CH, X, 23);
// borrar el ángulo de rotación
Graphics.rotate (-degree*Math.pi/180, x, 23);
x = x+30;
}
}
Private void drawRandomline (gráficos de gráficos) {
// dibujar líneas aleatorias
Graphics.SetColor (color.magenta);
para (int i = 0; i <5; i ++) {
/**
* Devuelve un pseudorandom, distribuido uniformemente {@code int} valor
* entre 0 (inclusive) y el valor especificado (exclusivo)
*/
int x1 = new Random (). NextInt (ancho);
int y1 = new Random (). NextInt (altura);
int x2 = new Random (). NextInt (ancho);
int y2 = new Random (). NextInt (altura);
Graphics.Drawline (x1, y1, x2, y2);
}
}
privado void sendbackground (gráficos gráficos) {
// establecer color: rosa
Graphics.setColor (color.pink);
Graphics.fillrect (0, 0, ancho, altura);
}
Vacío privado SetBorder (gráficos de gráficos) {
// establecer bordes
Graphics.setColor (color.blue);
Graphics.Drawrect (1, 1, ancho-2, altura-2);
}
Public void dopost (solicitud de httpservletrequest, respuesta httpservletreSponse)
Lanza ServletException, ioexception {
doget (solicitud, respuesta);
}
}