动态生成图片页面dyCreateImage.aspx
using System.Drawing.Imaging;
using System.Drawing.Drawing2D;
using System.Drawing;
protected void Page_Load(object sender, EventArgs e)
{
GenerateRandomImage(CheckCode());
}
private string CheckCode()
{
string CheckCode = string.Empty;
Random rand = new Random();
int temp;
for (int i = 0; i < 4; i++)
{
temp = rand.Next(48,57);
CheckCode += ((char)temp).ToString();
}
Response.Cookies.Add(new HttpCookie("CheckCode", CheckCode));
return CheckCode;
}
private void GenerateRandomImage(string s)
{
if (s == null || s.Trim() == string.Empty)
return;
int IWidth = (int)Math.Ceiling(s.Length * 15m);
int IHeight = 20;
Bitmap img = new Bitmap(IWidth, IHeight);
Graphics g = Graphics.FromImage(img);
g.Clear(Color.White);
try
{
Random rand = new Random();
for (int i = 0; i < 20; i++)
{
int x1 = rand.Next(IWidth);
int y1 = rand.Next(IHeight);
int x2 = rand.Next(IWidth);
int y2 = rand.Next(IHeight);
g.DrawLine(new Pen(Brushes.Silver), x1, y1, x2, y2);
}
for (int i = 0; i < 50; i++)
{
int x1 = rand.Next(IWidth);
int y1 = rand.Next(IHeight);
img.SetPixel(x1, y1, Color.FromArgb(rand.Next()));
}
g.DrawRectangle(new Pen(Color.SaddleBrown), 0, 0, IWidth - 1, IHeight - 1);
Font font = new Font("Arail", 14, FontStyle.Bold);
LinearGradientBrush lgb = new LinearGradientBrush(new Rectangle(0, 0, IWidth, IHeight), Color.Blue, Color.Purple, LinearGradientMode.Horizontal);
g.DrawString(s, font, lgb, 1, 0);
using (MemoryStream ms = new MemoryStream())
{
img.Save(ms, ImageFormat.Png);
Response.Clear();
Response.ContentType = "image/Png";
Response.BinaryWrite(ms.ToArray());
Response.End();
}
}
finally
{
g.Dispose();
img.Dispose();
}
}
调用页面前台html代码:
<tr>
<td align="middle" height="28">
验证码:
</td>
<td width="27%">
<input class="input_yz" id="_txtCode" runat="server" />
</td>
<td width="46%">
<img id="imgRandom" src="dyCreateImage.aspx" οnclick="javascript:changeImage();" width="50"
height="19" alt="验证码" />
</td>
</tr>
function changeImage()
{
document.getElementById("imgRandom").src= document.getElementById("imgRandom").src+"?";
}