コードコピーは次のとおりです。
パッケージcom.sanrong;
java.awt.colorをインポートします。
java.awt.fontをインポートします。
java.awt.graphicsをインポートします。
java.awt.graphics2dをインポートします。
java.awt.image.bufferedimageをインポートします。
java.io.ioexceptionをインポートします。
java.util.randomをインポートします。
javax.imageio.imageioをインポートします。
javax.servlet.servletexceptionをインポートします。
javax.servlet.http.httpservletをインポートします。
javax.servlet.http.httpservletrequestをインポートします。
javax.servlet.http.httpservletResponseをインポートします。
/**
*画像検証コードを作成します
* APIの使用--- bufferedimage
* @author ssa
*/
public class test4picはhttpservletを拡張します{
//定数の長さと幅を定義します
プライベート静的final int width = 130;
プライベート静的最終int height = 30;
public void doget(httpservletrequestリクエスト、httpservletresponse応答)
ServletException、ioException {
//背景コンテナを取得するこの方法はGraphics2Dを返しますが、後方互換性のためにここにあります。
bufferedimage image = new BufferedImage(幅、高さ、bufferedimage.type_int_rgb);
//グラフィック2Dを作成します。これは、このbufferedimageに描画するために使用できます。
Graphics Graphics = image.getGraphics();
//背景を設定します
setbackground(グラフィックス);
//ボーダーを設定します
Setborder(グラフィックス);
//ランダムな行を描画します
DrawRandomline(グラフィックス);
//乱数を描きます
Drawrandomnum((Graphics2d)Graphics);
//ブラウザが画像を返しているように、MemetypeタイプがTomcat構成でクエリになることを通知します。
Response.setContentType( "Image/jpeg");
imageio.write(image、 "jpg"、response.getOutputStream());
}
private 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/u5230/u5230/u5730/u5730/u5730/u5730/u5730/u5730/u5730 5c31/u53bb/ U5B50/U5F97/U4E5F/U548C/U90A3/U8981/U 4e0b/u770b/u5929/u65f6/u8fc7/u51fa/u5c0f/u4e48/u8d77/u4f60/u90fd/u628a/u597d/u8fd8/u591a/u597d/u4e3a/u53a/u53a/u53a /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/U7528/U56F/U56F 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/u4b0/u4b0/u4b0/u4b0/u4b0 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/U6555554/U6555 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/U527 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/U74/U74/U58/U53 A/U66F4/U4E5D/U60A8/ u6bcf/u98ce/u7ea7/u8ddf/u7b11/u554a/ U5b69/u4e07/u5c11/u76f4/u610f/u591c/u6bd4/u9636/u8fde/u8f66/u91cd/u4fbf/u6597/u9a6c/u54e/u5316/u592a/u53d8/u53d8/u53d8/u 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/U76F8BA/U88BA/U76F 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/u72a 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/U79B/U8272/U50138/U50138/U50138/U50138 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/u5df/u5df/u5df/u5df/u863d9 /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/U9670D/U5FC5/U5FC5/U5FC5 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/U6881 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/U5570/U5570/U5570/U5570/U5570/U5 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/U6025/U6777775C/U6025 5/u533a/u8863/u822c/ u62a5/u53f6/u538b/u6162/u53d4/u80cc ";
int x = 10;
for(int i = 0; i <4; i ++){
// 4つのランダムな漢字を取得します。漢字のユニコード間隔:[/u4e00-/u9fa5]
string ch = base.charat(new Random()。nextint(base.length())+"";
//回転角度0-30度を設定します(30で割って、残りは30を超えません)
int degree = new Random()。nextint()%30;
//テキストの回転角*3.14/180 = radian
graphics.rotate(degree*math.pi/180、x、23);
Graphics.DrawString(CH、X、23);
//回転角をクリアします
graphics.rotate(-degree*math.pi/180、x、23);
x = x+30;
}
}
private void drawrandomline(グラフィックグラフィックス){
//ランダムな行を描画します
Graphics.setColor(color.magenta);
for(int i = 0; i <5; i ++){
/**
*擬似ランダムを返し、均一に配布された{@code int}値を返します
* 0(包括的)と指定された値(排他的)の間
*/
int x1 = new Random()。nextint(width);
int y1 = new Random()。nextint(height);
int x2 = new Random()。nextint(width);
int y2 = new Random()。nextint(height);
Graphics.Drawline(x1、y1、x2、y2);
}
}
プライベートボイドセットバックグラウンド(グラフィックグラフィックス){
//色の設定:ピンク
graphics.setcolor(color.pink);
Graphics.FillRect(0、0、幅、高さ);
}
private void setborder(グラフィックグラフィックス){
//境界線を設定します
graphics.setcolor(color.blue);
Graphics.Drawrect(1、1、width-2、height-2);
}
public void dopost(httpservletrequestリクエスト、httpservletresponse応答)
ServletException、ioException {
doget(リクエスト、応答);
}
}