この記事は機械翻訳のミラー記事です。元の記事にジャンプするにはこちらをクリックしてください。

眺める: 18594|答える: 1

[ASP.NET] asp.net 画像キャプチャ生成の原理とコード

[リンクをコピー]
掲載地 2015/04/02 10:26:51 | | |
Systemを使い、
System.Dataを使い、
System.Configurationを使い、
System.Collectionsの使用;
System.Webを利用;
System.Web.Securityを使い、
System.Web.UIを使い、
System.Web.UI.WebControlsを使い、
System.Web.UI.WebControls.WebPartsを使い、
System.Web.UI.HtmlControlsを使い、
System.Drawing.Design を用いる;
System.Drawingを使い、
公開部分クラスイメージコード:System.Web.UI.Page
{
保護されたvoid Page_Load(オブジェクトセンダー、EventArgs e)
{
これ。 CreateCheckCodeImage(RndNum());

}

プライベート文字列 RndNum()
{
int number;
キャラクターコード;
string checkCode = String.Empty;

System.Random Random = 新しいRandom();

(int i = 0; 私は4<; i++)
{
数=ランダム。 Next();
もし(数 % 2 == 0)
コード = (char)('0' + (char)(番号 % 10));
そうでなければ
コード = (char)('A' + (char)(番号 % 26));
チェックコード +=コード。 ToString();
}
Response.Cookies.Add(新しいHttpCookie("yzmcode", checkCode));
返却チェックコード;
}
private void CreateCheckCodeImage(string checkCode)
{
if(checkCode == null || checkCode.Trim() == String.Empty)
帰還;
System.Drawing.Bitmap image = new System.Drawing.Bitmap((int)Math.Ceiling((checkCode.Length * 12.5)), 22);
グラフィックス g = Graphics.FromImage(image);
やってみて
{
//生成随机生成器
ランダムランダム = 新しいランダム();
//清空图片背景色
g.クリア(カラー・ホワイト);
//画图片的背景噪音线
(int i = 0; 私は25歳<; i++)
{
int x1 = ランダム。 次(画像。 幅);
int x2 = ランダム。 次(画像。 幅);
int y1 = ランダム。 次(画像。 高さ);
int y2 = ランダム。 次(画像。 高さ);
g.DrawLine(新しいペン(カラー.シルバー)、x1、y1、x2、y2);
}

Font font = new System.Drawing.Font("Arial", 12, (System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic));
System.Drawing.Drawing2D.LinearGradientBrush brush = new System.Drawing.Drawing2D.LinearGradientBrush(new Rectangle(0, 0, image. 幅、画像。 身長)、カラー・ブルー、カラー・ダークレッド、1.2f、真);
g.DrawString(チェックコード、フォント、ブラシ、2、2);
//画图片的前景噪音点
(int i = 0; 私は100<; i++)
{
int x = ランダム。 次(画像。 幅);
int y = ランダム。 次(画像。 高さ);
イメージ。 SetPixel(x, y, Color.FromArgb(random. Next()));
}
//画图片的边框线
g.DrawRectangle(新しいペン(Color.Silver)、0, 0、画像。 幅 - 1、画像。 身長 - 1);
System.IO.MemoryStream ms = new System.IO.MemoryStream();
イメージ。 Save(ms, System.Drawing.Imaging.ImageFormat.Gif);
Response.ClearContent();
Response.ContentType = "image/Gif";
Response.BinaryWrite(ms. ToArray());
}
最終的に
{
g.Dispose();
イメージ。 Dispose();
}
}

}
//验证码使用页login.aspx中的代码
<asp:ImageButton ID="yzm" runat="server" ImageUrl="imagecode.aspx" />
<asp:LinkButton ID="ChangeCode" runat="server" text="はっきり見えませんか?認証コードを変更してください" />
<asp:Button ID="Button1" runat="server" Text="Button" /></div>
//ogin.aspx.cs中的代码

コードを書く必要はなく、「はっきり見えませんか?」をクリックしてください。 「検証コードを変更して」と、後で検証コードを更新する
保護された虚無ChangeCode_Click(オブジェクトセンダー、EventArgs e)
{
}
//提交按钮代码这里是通过cookies来验证的
保護されたvoid Button1_Click(オブジェクト送信機、EventArgs e)
{
if (String.Compare(Request.Cookies["yzmcode"]. 値、a.Text、真) != 0)
{
Response.Write("<scrip去掉t>alert('CAPTCHA error!')"</scrip去掉t>);
}
そうでなければ
{ Response.Write("<scrip去掉t>alert('Validate!')</scrip去掉t>"; }
}




先の:IEはリモートコマンド実行を終了します
次に:asp.net クッキーで値を保存する
掲載地 2015/04/04 10:58:42 |
もう使えるよ
免責事項:
Code Farmer Networkが発行するすべてのソフトウェア、プログラミング資料、記事は学習および研究目的のみを目的としています。 上記の内容は商業的または違法な目的で使用されてはならず、そうでなければ利用者はすべての結果を負うことになります。 このサイトの情報はインターネットからのものであり、著作権紛争はこのサイトとは関係ありません。 ダウンロード後24時間以内に上記の内容を完全にパソコンから削除してください。 もしこのプログラムを気に入ったら、正規のソフトウェアを支持し、登録を購入し、より良い本物のサービスを受けてください。 もし侵害があれば、メールでご連絡ください。

Mail To:help@itsvse.com