La copie de code est la suivante:
package com.sanrong;
import java.awt.color;
Importer java.awt.font;
import java.awt.graphics;
import java.awt.graphics2d;
Importer java.awt.image.bufferedImage;
Importer java.io.ioException;
import java.util.random;
import javax.imageio.imageio;
Importer javax.servlet.servletException;
import javax.servlet.http.httpservlet;
Importer javax.servlet.http.httpservletRequest;
import javax.servlet.http.httpservletResponse;
/ **
* Créer un code de vérification d'image
* Utilisation de l'API --- BufferedImage
* @author ssa
* /
classe publique test4pic étend httpservlet {
// définir la longueur et la largeur de la constante
Largeur intatique finale statique privée = 130;
private statique final int hauteur = 30;
public void doGet (demande httpservletRequest, réponse httpservletResponse)
lance ServletException, ioException {
// Obtenez un conteneur d'arrière-plan Cette méthode renvoie un graphics2d, mais est là pour la compatibilité en arrière.
BufferedImage Image = new BufferedImage (largeur, hauteur, bufferedImage.type_int_rgb);
// Créez un graphics2d, qui peut être utilisé pour dessiner dans cette tampon.
Graphics Graphics = image.getGraphics ();
// définir l'arrière-plan
SetBackground (graphiques);
// Définir la bordure
Setborder (graphiques);
// tracer une ligne aléatoire
drawrandomline (graphiques);
// dessine un nombre aléatoire
DrawRandomNum ((Graphics2D) graphiques);
// informez que le navigateur renvoie l'image afin que le type de metype soit une requête dans la configuration de Tomcat.
réponse.setContentType ("Image / JPEG");
Imageo.write (image, "jpg", réponse.getOutputStream ());
}
VOID privé Drawrandomnum (graphiques graphiques) {
// Écrivez des nombres aléatoires
graphics.setColor (Color.Blue);
graphics.setfont (new Font ("宋体", font.bold, 20));
// mais il y a de nombreux mots rares, qui doivent être filtrés et sélectionnés chinois communs
Chaîne base = "/ u7684 / u4e00 / u4e86 / u662f / u6211 / u4e0d / u5728 / u4eba / u4eec / u6709 / u6765 / u4ed6 / u8fd9 / u4e0a / u7740 / u4e2a / u5730 C31 / 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 7136 / u6210 / u56de / u4ec0 / u8fb9 / u4f5c / u5bf9 / u5f00 / u800c / u5df1 / u 4e9b / u73b0 / u5c71 / u6c11 / u5019 / u7ecf / u53d1 / u5de5 / u5411 / u4e8b / u547d / u7ed9 / u957f / u6c34 / u51e0 / u4e49 / u4e09 / u58f0 / u4e8e / u7406 / u773c / u5fd7 / u70b9 / u5fc3 / u6218 / u4e8c / u95ee / u4f4 6 / U8EAB / U65B9 / U5B9E / U5403 / U505A / U53EB / U5F53 / U4F4F / U542C / U9769 / U 6253 / u5149 / u4ea7 / u60c5 / u8def / u5206 / u603b / u6761 / u767d / u8bdd / U4E1C / U5E2D / U6B21 / U4EB2 / U5982 / U88AB / U82B1 / U53E3 / U653E / U513F / U5 E38 / U6C14 / U4E94 / U7B2C / U4F7F / U5199 / U519 / u679c / u600e / u5b9a / u8bb8 / U5FEB / U660E / U884C / U56E0 / U522B / U98 de / u5916 / u6811 / u7269 / u6d3b / u90e8 / u95e8 / u65e0 / u5f80 / u8239 / u671b / u 65b0 / u66f4 / u4e5d / u60a8 / u6bcf / u98ce / u7ea7 / u8ddf / u7b11 / u554a / u5b69 / u4e07 / u5c11 / u76f4 / u610f / u591c / u6bd4 / u9636 / u8fde / u8f66 / u91c d / u4fbf / u6597 / u9a6c / u54ea / u5316 / u592a 8EB / U8005 / U5E72 / U77F3 / U6EE1 / U65E5 / U51B3 / U767E / U539F / U62 ff / u7fa4 / u7a76 / u5404 / u516d / u672c / u601d / u89e3 / u7acb / u6cb3 / u6751 / u516b / u96be / u65e9 / u8bba / u5417 / u6839 / u5171 / u8ba9 / u76f8 / u7839 / u5171 / u5176 / u4e66 / u5750 / U63A5 / U5E94 / U5173 / U4FE1 / U89C9 / U6B65 / U53CD / U5904 / U8BB0 / U5C06 / U5343 / U627E / U4E89 / U9886 / U6216 / U5E08 / U7 ED3 / U5757 / 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 / u8272 / u8138 / u7247 / u79d1 / u8272 / u8138 / U7247 / U79d1 / 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 / U6CB / U5317 / U5FC5 / U670D / U 5185 / U8BC6 / U9A8C / U4F20 / U4E1A / U83DC / U722C / U7761 / U5174 / U5F6 2 / u91cf / u54b1 / u89c2 / u82e6 / u4f53 / u4f17 / u901a / u51b2 / u5408 / u7834 / u53cb / u5ea6 / u672f / u996d / u516c / u65c1 / u623f / u6781 / u5357c1 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 / u54c 7F3 / U7B54 / U54E5 / U9645 / u65e7 / u795e / u5ea7 / u7ae0 / u5e2e / u556 6 / u53d7 / u7cfb / u4ee4 / u8df3 / u975e / u4f55 / u725b / u53d6 / u5165 / u5cb8 / u 6562 / u533a / u8863 / u822c / U62A5 / U53F6 / U538B / U6162 / U53D4 / U80CC ";
int x = 10;
pour (int i = 0; i <4; i ++) {
// Obtenez quatre caractères chinois aléatoires. Intervalle Unicode des caractères chinois: [/ u4e00- / u9fa5]
String ch = base.charat (new Random (). NextInt (base.length ())) + "";
// Réglez l'angle de rotation 0 -30 degrés (divisé par 30, le reste ne sera pas supérieur à 30)
int degré = nouveau aléatoire (). nextInt ()% 30;
// L'angle de rotation du texte * 3.14 / 180 = Radian
graphics.rotate (degré * math.pi / 180, x, 23);
Graphics.Drawstring (Ch, X, 23);
// effacer l'angle de rotation
graphics.rotate (-degree * math.pi / 180, x, 23);
x = x + 30;
}
}
VOID PRIVÉ DRAYRANDOMLINE (graphiques graphiques) {
// dessine des lignes aléatoires
graphics.setColor (Color.magenta);
pour (int i = 0; i <5; i ++) {
/ **
* Renvoie une pseudorandom, uniformément distribuée {@code int}
* Entre 0 (inclusif) et la valeur spécifiée (exclusive)
* /
int x1 = new Random (). NextInt (largeur);
int y1 = new random (). nextInt (hauteur);
int x2 = new random (). nextInt (largeur);
int y2 = new random (). nextInt (hauteur);
Graphics.Drawline (x1, y1, x2, y2);
}
}
SetBackground privé (graphiques graphiques) {
// Définir la couleur: rose
graphics.setColor (Color.pink);
graphics.filrect (0, 0, largeur, hauteur);
}
Setborder Void privé (graphiques graphiques) {
// Définir les bordures
graphics.setColor (Color.Blue);
Graphics.Drawrect (1, 1, largeur-2, hauteur-2);
}
DOPOST PUBLIC (HttpServletRequest, réponse httpservletResponse)
lance ServletException, ioException {
DoGet (demande, réponse);
}
}