• Aspx 验证码_各种封装


    验证码

      1 namespace CZBK.TestProject.Common
      2 {
      3     public class ValidateCode
      4     {
      5         public ValidateCode()
      6         {
      7         }
      8         /// <summary>
      9         /// 验证码的最大长度
     10         /// </summary>
     11         public int MaxLength
     12         {
     13             get { return 10; }
     14         }
     15         /// <summary>
     16         /// 验证码的最小长度
     17         /// </summary>
     18         public int MinLength
     19         {
     20             get { return 1; }
     21         }
     22         /// <summary>
     23         /// 生成验证码
     24         /// </summary>
     25         /// <param name="length">指定验证码的长度</param>
     26         /// <returns></returns>
     27         public string CreateValidateCode(int length)
     28         {
     29             int[] randMembers = new int[length];
     30             int[] validateNums = new int[length];
     31             string validateNumberStr = "";
     32             //生成起始序列值
     33             int seekSeek = unchecked((int)DateTime.Now.Ticks);
     34             Random seekRand = new Random(seekSeek);
     35             int beginSeek = (int)seekRand.Next(0, Int32.MaxValue - length * 10000);
     36             int[] seeks = new int[length];
     37             for (int i = 0; i < length; i++)
     38             {
     39                 beginSeek += 10000;
     40                 seeks[i] = beginSeek;
     41             }
     42             //生成随机数字
     43             for (int i = 0; i < length; i++)
     44             {
     45                 Random rand = new Random(seeks[i]);
     46                 int pownum = 1 * (int)Math.Pow(10, length);
     47                 randMembers[i] = rand.Next(pownum, Int32.MaxValue);
     48             }
     49             //抽取随机数字
     50             for (int i = 0; i < length; i++)
     51             {
     52                 string numStr = randMembers[i].ToString();
     53                 int numLength = numStr.Length;
     54                 Random rand = new Random();
     55                 int numPosition = rand.Next(0, numLength - 1);
     56                 validateNums[i] = Int32.Parse(numStr.Substring(numPosition, 1));
     57             }
     58             //生成验证码
     59             for (int i = 0; i < length; i++)
     60             {
     61                 validateNumberStr += validateNums[i].ToString();
     62             }
     63             return validateNumberStr;
     64         }
     65 
     66         /// <summary>
     67         /// 创建验证码的图片
     68         /// </summary>
     69         /// <param name="containsPage">要输出到的page对象</param>
     70         /// <param name="validateNum">验证码</param>
     71         public void CreateValidateGraphic(string validateCode, HttpContext context)
     72         {
     73             Bitmap image = new Bitmap((int)Math.Ceiling(validateCode.Length * 12.0), 22);
     74             Graphics g = Graphics.FromImage(image);
     75             try
     76             {
     77                 //生成随机生成器
     78                 Random random = new Random();
     79                 //清空图片背景色
     80                 g.Clear(Color.White);
     81                 //画图片的干扰线
     82                 for (int i = 0; i < 25; i++)
     83                 {
     84                     int x1 = random.Next(image.Width);
     85                     int x2 = random.Next(image.Width);
     86                     int y1 = random.Next(image.Height);
     87                     int y2 = random.Next(image.Height);
     88                     g.DrawLine(new Pen(Color.Silver), x1, y1, x2, y2);
     89                 }
     90                 Font font = new Font("Arial", 12, (FontStyle.Bold | FontStyle.Italic));
     91                 LinearGradientBrush brush = new LinearGradientBrush(new Rectangle(0, 0, image.Width, image.Height),
     92                  Color.Blue, Color.DarkRed, 1.2f, true);
     93                 g.DrawString(validateCode, font, brush, 3, 2);
     94                 //画图片的前景干扰点
     95                 for (int i = 0; i < 100; i++)
     96                 {
     97                     int x = random.Next(image.Width);
     98                     int y = random.Next(image.Height);
     99                     image.SetPixel(x, y, Color.FromArgb(random.Next()));
    100                 }
    101                 //画图片的边框线
    102                 g.DrawRectangle(new Pen(Color.Silver), 0, 0, image.Width - 1, image.Height - 1);
    103                 //保存图片数据
    104                 MemoryStream stream = new MemoryStream();
    105                 image.Save(stream, ImageFormat.Jpeg);
    106                 //输出图片流
    107                 context.Response.Clear();
    108                 context.Response.ContentType = "image/jpeg";
    109                 context.Response.BinaryWrite(stream.ToArray());
    110             }
    111             finally
    112             {
    113                 g.Dispose();
    114                 image.Dispose();
    115             }
    116         }
    117         /// <summary>
    118         /// 得到验证码图片的长度
    119         /// </summary>
    120         /// <param name="validateNumLength">验证码的长度</param>
    121         /// <returns></returns>
    122         public static int GetImageWidth(int validateNumLength)
    123         {
    124             return (int)(validateNumLength * 12.0);
    125         }
    126         /// <summary>
    127         /// 得到验证码的高度
    128         /// </summary>
    129         /// <returns></returns>
    130         public static double GetImageHeight()
    131         {
    132             return 22.5;
    133         }
    134     }
    135 }

    生成缩略图-->后面直接去调用就OK了

     public class ImageHelper
        {
            #region 缩略图
            /// <summary>
            /// 生成缩略图
            /// </summary>
            /// <param name="originalImagePath">源图路径(物理路径)</param>
            /// <param name="thumbnailPath">缩略图路径(物理路径)</param>
            /// <param name="width">缩略图宽度</param>
            /// <param name="height">缩略图高度</param>
            /// <param name="mode">生成缩略图的方式</param>    
            public static void MakeThumbnail(string originalImagePath, string thumbnailPath, int width, int height, string mode)
            {
                System.Drawing.Image originalImage = System.Drawing.Image.FromFile(originalImagePath);
    
                int towidth = width;
                int toheight = height;
    
                int x = 0;
                int y = 0;
                int ow = originalImage.Width;
                int oh = originalImage.Height;
    
                switch (mode)
                {
                    case "HW":  //指定高宽缩放(可能变形)                
                        break;
                    case "W":   //指定宽,高按比例                    
                        toheight = originalImage.Height * width / originalImage.Width;
                        break;
                    case "H":   //指定高,宽按比例
                        towidth = originalImage.Width * height / originalImage.Height;
                        break;
                    case "Cut": //指定高宽裁减(不变形)                
                        if ((double)originalImage.Width / (double)originalImage.Height > (double)towidth / (double)toheight)
                        {
                            oh = originalImage.Height;
                            ow = originalImage.Height * towidth / toheight;
                            y = 0;
                            x = (originalImage.Width - ow) / 2;
                        }
                        else
                        {
                            ow = originalImage.Width;
                            oh = originalImage.Width * height / towidth;
                            x = 0;
                            y = (originalImage.Height - oh) / 2;
                        }
                        break;
                    default:
                        break;
                }
    
                //新建一个bmp图片
                System.Drawing.Image bitmap = new System.Drawing.Bitmap(towidth, toheight);
    
                //新建一个画板
                System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(bitmap);
    
                //设置高质量插值法
                g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High;
    
                //设置高质量,低速度呈现平滑程度
                g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
    
                //清空画布并以透明背景色填充
                g.Clear(System.Drawing.Color.Transparent);
    
                //在指定位置并且按指定大小绘制原图片的指定部分
                g.DrawImage(originalImage, new System.Drawing.Rectangle(0, 0, towidth, toheight), new System.Drawing.Rectangle(x, y, ow, oh), System.Drawing.GraphicsUnit.Pixel);
    
                try
                {
                    //以jpg格式保存缩略图
                    bitmap.Save(thumbnailPath, System.Drawing.Imaging.ImageFormat.Jpeg);
                }
                catch (System.Exception e)
                {
                    throw e;
                }
                finally
                {
                    originalImage.Dispose();
                    bitmap.Dispose();
                    g.Dispose();
                }
            }
            #endregion
        }

    水印图

     1  public void ProcessRequest(HttpContext context)
     2         {
     3             //生成水印图
     4             context.Response.ContentType = "text/plain";
     5           //访问该页面创建一张图片,并且该图片上写字.
     6             using (Bitmap map = new Bitmap(300, 400))//创建了一个画布
     7             {
     8                 using (Graphics g = Graphics.FromImage(map))//为画布创建了一个画笔
     9                 {
    10                     g.Clear(Color.Azure);
    11                     g.DrawString("传智播客", new Font("黑体", 14.0f, FontStyle.Bold), Brushes.Red, new PointF(80,90));
    12                     string fileName = Guid.NewGuid().ToString();
    13                     map.Save(context.Request.MapPath("/ImagePath/"+fileName+".jpg"),System.Drawing.Imaging.ImageFormat.Jpeg);//保存图片.
    14                 }
    15             }
    16         }

    文件下载

    1  public void ProcessRequest(HttpContext context)
    2         {
    3             context.Response.ContentType = "text/plain";
    4             string encodeFileName = "aaa.txt";
    5             context.Response.AddHeader("Content-Disposition", string.Format("attachment;filename="{0}"", encodeFileName));//在响应头中加上Content-Disposition,attachment表示以附件形式下载.
    6             context.Response.WriteFile("aaa.txt");
    7         }

    文件上传

     public void ProcessRequest(HttpContext context)
            {
                context.Response.ContentType = "text/html";
                HttpPostedFile file=context.Request.Files["fileUp"];//接收文件数据.
                if (file == null)
                {
                    context.Response.Write("请选择文件!!");
                }
                else
                {
                    //判断上传的文件的类型.
                   string fileName= Path.GetFileName(file.FileName);//获取文件名与扩张名. aa.jpg
                   string fileExt = Path.GetExtension(fileName);//获取扩展名.
                   if (fileExt == ".jpg"||fileExt==".gif")
                   {
                       string dir = "/ImagePath/"+DateTime.Now.Year+"/"+DateTime.Now.Month+"/"+DateTime.Now.Day+"/";
                       //创建文件夹.
                       Directory.CreateDirectory(Path.GetDirectoryName(context.Request.MapPath(dir)));
                       //需要对上传的文件进行重命名.
                       string newfileName = Guid.NewGuid().ToString();
                       string fullDir = dir + newfileName + fileExt;//构建了完整文件路径.
                     //  file.SaveAs(context.Request.MapPath(fullDir));
                     //  file.SaveAs(context.Request.MapPath("/ImagePath/"+fileName));//保存文件
                       using (Image imge = Image.FromStream(file.InputStream))//根据上传的文件流创建Image
                       {
                           using (Bitmap map = new Bitmap(imge.Width,imge.Height))
                           {
                               using (Graphics g = Graphics.FromImage(map))
                               {
                                   //设置高质量插值法
                                   g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High;
    
                                   //设置高质量,低速度呈现平滑程度
                                   g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
                                   //先将图片画到画布上.
                                   g.DrawImage(imge, new Rectangle(0, 0, imge.Width, imge.Height));
                                   //在右下角添加水印.
                                   g.DrawString("传智播客", new Font("黑体", 14.0f, FontStyle.Bold), Brushes.Red, new PointF(imge.Width-100,imge.Height-30));
                                   map.Save(context.Request.MapPath(fullDir),System.Drawing.Imaging.ImageFormat.Jpeg);
                               }
                           }
                       }
    
                       context.Response.Write("<html><head></head><body><img src='"+fullDir+"'/></body></html>");
                       //最后将上传成功的图片的路径存储到数据库。
                   }
                   else
                   {
                       context.Response.Write("文件类型错误!!");
                   }
    
                }
            }

    PageBar

     1  public class PageBar
     2     {
     3        /// <summary>
     4        /// 获取数字页码条
     5        /// </summary>
     6        /// <param name="pageIndex">当前页码值</param>
     7        /// <param name="pageCount">总的页数</param>
     8        /// <returns></returns>
     9        public static string GetPageBar(int pageIndex, int pageCount)
    10        {
    11            if (pageCount == 1)//如果只有1页,不用在显示页码条
    12            {
    13                return string.Empty;
    14            }
    15            //计算起始位置与终止位置。
    16            int start = pageIndex - 5;//页面上显示10个数字页码
    17            if (start < 1)
    18            {
    19                start = 1;
    20            }
    21            int end = start + 9;//终止位置.
    22            if(end>pageCount)//该条件成立,需要重新计算起始位置
    23            {
    24                end=pageCount;
    25                start = end - 9>1?end-9:1;
    26            }
    27            StringBuilder sb = new StringBuilder();
    28            if (pageIndex > 1)
    29            {
    30                sb.Append(string.Format("<a href='?pageIndex={0}'>上一页</a>",pageIndex-1));
    31            }
    32            for (int i = start; i <= end; i++)
    33            {
    34                if (i == pageIndex)//如果循环的数字与当前页码相等,那么不用超链接
    35                {
    36                    sb.Append(i);
    37                }
    38                else
    39                {
    40                    sb.Append(string.Format("<a href='?pageIndex={0}'>{0}</a>",i));
    41                }
    42            }
    43            if (pageIndex <pageCount)
    44            {
    45                sb.Append(string.Format("<a href='?pageIndex={0}'>下一页</a>", pageIndex +1));
    46            }
    47            return sb.ToString();
    48        }
    49     }
  • 相关阅读:
    (原)学以致用:用数学公式'幂函数'支持生产经营分析
    CString 成员函数用法大全
    致hr新人的一封信
    [恢]hdu 2560
    [恢]hdu 1907
    [恢]hdu 1267
    [恢]hdu 2554
    [恢]hdu 1329
    [恢]hdu 2317
    [恢]hdu 2555
  • 原文地址:https://www.cnblogs.com/liuweiqiang11188/p/6684863.html
Copyright © 2020-2023  润新知