C#关于生成临时的验证码图片
2019-02-19 14:42 wolfer_3 阅读(283) 评论(0) 收藏 举报前台代码如下:
<img src="/shhks/ReadTempImg.aspx?Uid=123" width="136" height="51" id="ima_yz">
后台代码如下:
protected void Page_Load(object sender, EventArgs e)
{
string TempNumber = Request.QueryString["Uid"];
TempNumber = new Epoint.Common.Encrypt().DecryptedDataWithSymmKey(TempNumber).Replace("\\0", "");
System.Drawing.Image originalImage = System.Drawing.Image.FromFile(MapPath(Epoint.Frame.Bizlogic.common.GetApplicationPath() + "Images/Rzm_bg.gif"));
int towidth = originalImage.Width;
int toheight = originalImage.Height;
int x = 0;
int y = 0;
int ow = originalImage.Width;
int oh = originalImage.Height;
//新建一个bmp图片
System.Drawing.Image bitmap = new Bitmap(towidth, toheight);
//新建一个画板
Graphics g = Graphics.FromImage(bitmap);
//设置高质量插值法
g.InterpolationMode = InterpolationMode.High;
//设置高质量,低速度呈现平滑程度
g.SmoothingMode = SmoothingMode.HighQuality;
//清空画布并以透明背景色填充
g.Clear(Color.Transparent);
//在指定位置并且按指定大小绘制原图片的指定部分
g.DrawImage(originalImage, new Rectangle(0, 0, towidth, toheight),
new Rectangle(x, y, ow, oh),
GraphicsUnit.Pixel);
addWatermarkText(g, towidth, toheight, TempNumber);
MemoryStream ms = new MemoryStream();
byte[] imagedata = null;
bitmap.Save(ms, System.Drawing.Imaging.ImageFormat.Gif);
imagedata = ms.GetBuffer();
bitmap.Dispose();
g.Dispose();
Response.ContentType = "image/gif";
Response.BinaryWrite(imagedata);// 在此处放置用户代码以初始化页面// 在此处放置用户代码以初始化页面
}
/// <summary>
/// 加水印文字
/// </summary>
/// <param name="picture">imge 对象</param>
/// <param name="_width">原始图片的宽度</param>
/// <param name="_height">原始图片的高度.</param>
private void addWatermarkText(Graphics picture, int _width, int _height, string WaterText)
{
;
Font crFont = null;
SizeF crSize = new SizeF();
Random rd = new Random();
Color[] colors = { Color.Black, Color.Red, Color.DarkBlue, Color.Green, Color.Orange, Color.Brown, Color.DarkCyan, Color.Purple };
int rnCol = rd.Next(colors.Length);
crFont = new Font("Arial", 28f, FontStyle.Bold);
crSize = picture.MeasureString(WaterText, crFont);
float xpos = 0;
float ypos = 0;
xpos = ((float)_width * (float).01) + (crSize.Width / 2);
ypos = (float)_height * (float).01;
StringFormat StrFormat = new StringFormat();
StrFormat.Alignment = StringAlignment.Center;
SolidBrush semiTransBrush2 = new SolidBrush(colors[rnCol]);
picture.DrawString(WaterText, crFont, semiTransBrush2, xpos + 1, ypos + 1, StrFormat);
SolidBrush semiTransBrush = new SolidBrush(colors[rnCol]);
picture.DrawString(WaterText, crFont, semiTransBrush, xpos, ypos, StrFormat);
semiTransBrush2.Dispose();
semiTransBrush.Dispose();
}
浙公网安备 33010602011771号