코드 사본은 다음과 같습니다.
패키지 com.sanrong;
import java.awt.color;
Java.awt.Font 가져 오기;
java.awt.graphics 가져 오기;
import java.awt.graphics2d;
java.awt.image.bufferedimage import;
import java.io.ioexception;
java.util.random import;
import javax.imageio.imageio;
javax.servlet.servletexception import;
import javax.servlet.http.httpservlet;
import javax.servlet.http.httpservletrequest;
import javax.servlet.http.httpservletresponse;
/**
* 사진 검증 코드를 만듭니다
* API 사용 --- BufferedImage
* @Author SSA
*/
공개 클래스 test4pic 확장 httpservlet {
// 상수의 길이와 너비를 정의합니다
개인 정적 최종 int 너비 = 130;
개인 정적 최종 int 높이 = 30;
공개 void doget (httpservletrequest 요청, httpservletresponse 응답)
servletexception, ioexception {
// 배경 컨테이너를 가져옵니다.이 메소드는 Graphics2d를 반환하지만 거꾸로 호환성을 위해 여기에 있습니다.
BufferedImage image = 새로운 BufferedImage (너비, 높이, BufferedImage.type_int_rgb);
//이 bufferedImage에 그리는 데 사용할 수있는 그래픽 2D를 만듭니다.
그래픽 그래픽 = image.getGraphics ();
// 배경을 설정합니다
좌절장 (그래픽);
// 테두리를 설정합니다
세트 버더 (그래픽);
// 임의의 선을 그립니다
DrawRandomline (그래픽);
// 임의의 숫자를 그립니다
DrawRandomnum ((Graphics2d) 그래픽);
// 브라우저가 이미지를 반환하여 Memetype 유형이 Tomcat 구성에서 쿼리를 반환한다는 것을 알립니다.
Response.setContentType ( "image/jpeg");
imageio.write (image, "jpg", response.getoutputStream ());
}
개인 void drawrandomnum (Graphics2d Graphics) {
// 랜덤 숫자를 쓰십시오
그래픽 .setColor (color.blue);
Graphics.setFont (New Font ( "宋体", font.bold, 20));
// 그러나 그 안에는 많은 희귀 단어가 있으며, 필터링 및 선택 해야하는 일반적인 중국어
끈 Base = "/u7684/u4e00/u4e86/u662f/u6211/u4e0d/u5728/u4eba/u4eec/u6709/u6765/u4ed6/u8fd9/u4e0a/u7740/u4e2a/u5730/u5230/u5927/U5927/ U5C31/U53BB/ U5B50/u5f97/u4e5f/u548c/u90a3/u8981/u 4E0B/U770B/U5929/U65F6/U8FC7/U51FA/U5C0F/U4E48/U8D77/U4F60/U90FD/U628A/U597D/U8FD8/U591A/U6CA1/U4E3A/U53C/U53F8/U53F. U53EA/U4EE5/U4E3B/U4F1A/ U6837/u5e74/u60f3/u751f/u540c/u800 1/u4e2d/u5341/u4ece/u81ea/u9762/u524d/u5934/u9053/u5b83/u540e/u7136/u8d70/u5f88/u50cf/u89c1/u4e24/u5979/u56fd b/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/c. 5/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/U644C 00/U5149/U4EA7/U60C5/ U8DEF/U5206/U603B/U6761/U767D/U8BDD/ U4E1C/U5E2D/U6B21/U4EB2/U5982/U88AB/U82B1/U53E3/U653E/U513F/U5E38/U6C14/U4E94/U7B2C/U4F7F/U5199/U519B/U5427/U6587 d/u679c/u600e/u5b9a/u8bb8/ U5FEB/U660E/U884C/U56E0/U522B/U98 DE/U5916/U6811/U7269/U6D3B/U90E8/U95E8/U65E0/U5F80/U8239/U671B/U65B0/U5E26/U961F/U5148/U529B/U5B8C/U5374/U7AD9/U443/U5B8C/U5B8C/U5BER A/U66F4/U4E5D/U60A8/ u6bcf/u98ce/u7ea7/u8ddf/u7b11/u554a/ U5B69/U4E07/U5C11/U76F4/U610F/U591C/U6BD4/U9636/U8FDE/U8F66/U91CD/U4FBF/U6597/U9A6C/U54EA/U5316/U592A/U6307/U53D8/U799992A 58EB/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/U76F8/U8ba9/U76f8 A/U5176/U4E66/U5750/ U63A5/U5E94/U5173/U4FE1/U89C9/U6B65 /u53cd/u5904/u8bb0/u5c06/u5343/u627e/u4e89/u9886/u6216/u5e08/u7ed3/u5757/u8dd1/u8c01/u8349/u8d8a/u5b57/u52A0/U71A 1/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/u79d11247247/U79d1127247/U79d b/u5229/u4e16/u521a/ U4E14/U7531/U9001/U5207/U661F/U5BFC /u665a/u8868/u591f/u6574/u8ba4/u54cd/u96ea/u6d41/u672a/u573a/u8be5/u5e76/u5e95/u6df1/u523b/u5e73/u4f1f/u5fd9/u63d1/u46e /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/U96E8/U970D/U970D/U96OC5/U.96CBB/U5317/U9020 U5185/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/u5357 BFB/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/U5470/U470/U470/U470/U470/U470/U470/U570/U4E61/U57 97f3/u7b54/u54e5/u9645/ U65E7/U795E/U5EA7/U7AE0/U5E2E/U556 6/U53D7/U7CFB/U4EE4/U8DF3/U975E/U4F55/U725B/U53D6/U5165/U5CB8/U6562/U6389/u5ffd/U79CD/U88C5/U9876/U6797/U505/U505C 5/u533a/u8863/u822c/ U62A5/U53F6/U538B/U6162/U53D4/U80CC ";
int x = 10;
for (int i = 0; i <4; i ++) {
// 4 개의 임의의 중국어를받습니다. 한자의 유니 코드 간격 : [/u4e00-/u9fa5]
문자열 ch = base.charat (new random (). nextInt (base.length ())+"";
// 회전 각도를 0-30도 설정 (30으로 나누기, 나머지는 30보다 크지 않습니다)
int degree = new random (). nextint ()%30;
// 텍스트의 회전 각도*3.14/180 = radian
Graphics.rotate (학위*Math.pi/180, x, 23);
Graphics.DrawString (ch, x, 23);
// 회전 각도를 지 웁니다
Graphics.rotate (-Degree*Math.pi/180, x, 23);
x = x+30;
}
}
개인 void drawrandomline (그래픽 그래픽) {
// 임의의 선을 그립니다
Graphics.setColor (Color.Magenta);
for (int i = 0; i <5; i ++) {
/**
* 의사로드 돔을 반환하고 균일하게 분포 {@code int} 값을 반환합니다
* 0 (포함)과 지정된 값 (독점) 사이
*/
int x1 = new random (). nextInt (너비);
int y1 = new random (). nextInt (높이);
int x2 = new random (). nextInt (너비);
int y2 = new random (). NextInt (높이);
Graphics.Drawline (x1, y1, x2, y2);
}
}
Private void setbackground (그래픽 그래픽) {
// 색상 설정 : 핑크
Graphics.setColor (color.pink);
그래픽 .fillRect (0, 0, 너비, 높이);
}
개인 void setborder (그래픽 그래픽) {
// 경계를 설정합니다
그래픽 .setColor (color.blue);
Graphics.DrawRect (1, 1, width-2, height-2);
}
공개 void dopost (httpservletrequest 요청, httpservletresponse 응답)
servletexception, ioexception {
doget (요청, 응답);
}
}