验证码

  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 ; }
  14. }
  15. /// <summary>
  16. /// 验证码的最小长度
  17. /// </summary>
  18. public int MinLength
  19. {
  20. get { return ; }
  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(, Int32.MaxValue - length * );
  36. int[] seeks = new int[length];
  37. for (int i = ; i < length; i++)
  38. {
  39. beginSeek += ;
  40. seeks[i] = beginSeek;
  41. }
  42. //生成随机数字
  43. for (int i = ; i < length; i++)
  44. {
  45. Random rand = new Random(seeks[i]);
  46. int pownum = * (int)Math.Pow(, length);
  47. randMembers[i] = rand.Next(pownum, Int32.MaxValue);
  48. }
  49. //抽取随机数字
  50. for (int i = ; 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(, numLength - );
  56. validateNums[i] = Int32.Parse(numStr.Substring(numPosition, ));
  57. }
  58. //生成验证码
  59. for (int i = ; 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), );
  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 = ; i < ; 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", , (FontStyle.Bold | FontStyle.Italic));
  91. LinearGradientBrush brush = new LinearGradientBrush(new Rectangle(, , image.Width, image.Height),
  92. Color.Blue, Color.DarkRed, 1.2f, true);
  93. g.DrawString(validateCode, font, brush, , );
  94. //画图片的前景干扰点
  95. for (int i = ; i < ; 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), , , image.Width - , image.Height - );
  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了

  1. public class ImageHelper
  2. {
  3. #region 缩略图
  4. /// <summary>
  5. /// 生成缩略图
  6. /// </summary>
  7. /// <param name="originalImagePath">源图路径(物理路径)</param>
  8. /// <param name="thumbnailPath">缩略图路径(物理路径)</param>
  9. /// <param name="width">缩略图宽度</param>
  10. /// <param name="height">缩略图高度</param>
  11. /// <param name="mode">生成缩略图的方式</param>
  12. public static void MakeThumbnail(string originalImagePath, string thumbnailPath, int width, int height, string mode)
  13. {
  14. System.Drawing.Image originalImage = System.Drawing.Image.FromFile(originalImagePath);
  15.  
  16. int towidth = width;
  17. int toheight = height;
  18.  
  19. int x = ;
  20. int y = ;
  21. int ow = originalImage.Width;
  22. int oh = originalImage.Height;
  23.  
  24. switch (mode)
  25. {
  26. case "HW": //指定高宽缩放(可能变形)
  27. break;
  28. case "W": //指定宽,高按比例
  29. toheight = originalImage.Height * width / originalImage.Width;
  30. break;
  31. case "H": //指定高,宽按比例
  32. towidth = originalImage.Width * height / originalImage.Height;
  33. break;
  34. case "Cut": //指定高宽裁减(不变形)
  35. if ((double)originalImage.Width / (double)originalImage.Height > (double)towidth / (double)toheight)
  36. {
  37. oh = originalImage.Height;
  38. ow = originalImage.Height * towidth / toheight;
  39. y = ;
  40. x = (originalImage.Width - ow) / ;
  41. }
  42. else
  43. {
  44. ow = originalImage.Width;
  45. oh = originalImage.Width * height / towidth;
  46. x = ;
  47. y = (originalImage.Height - oh) / ;
  48. }
  49. break;
  50. default:
  51. break;
  52. }
  53.  
  54. //新建一个bmp图片
  55. System.Drawing.Image bitmap = new System.Drawing.Bitmap(towidth, toheight);
  56.  
  57. //新建一个画板
  58. System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(bitmap);
  59.  
  60. //设置高质量插值法
  61. g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High;
  62.  
  63. //设置高质量,低速度呈现平滑程度
  64. g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
  65.  
  66. //清空画布并以透明背景色填充
  67. g.Clear(System.Drawing.Color.Transparent);
  68.  
  69. //在指定位置并且按指定大小绘制原图片的指定部分
  70. g.DrawImage(originalImage, new System.Drawing.Rectangle(, , towidth, toheight), new System.Drawing.Rectangle(x, y, ow, oh), System.Drawing.GraphicsUnit.Pixel);
  71.  
  72. try
  73. {
  74. //以jpg格式保存缩略图
  75. bitmap.Save(thumbnailPath, System.Drawing.Imaging.ImageFormat.Jpeg);
  76. }
  77. catch (System.Exception e)
  78. {
  79. throw e;
  80. }
  81. finally
  82. {
  83. originalImage.Dispose();
  84. bitmap.Dispose();
  85. g.Dispose();
  86. }
  87. }
  88. #endregion
  89. }

水印图

  1. public void ProcessRequest(HttpContext context)
  2. {
  3. //生成水印图
  4. context.Response.ContentType = "text/plain";
  5. //访问该页面创建一张图片,并且该图片上写字.
  6. using (Bitmap map = new Bitmap(, ))//创建了一个画布
  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(,));
  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. }

文件上传

  1. public void ProcessRequest(HttpContext context)
  2. {
  3. context.Response.ContentType = "text/html";
  4. HttpPostedFile file=context.Request.Files["fileUp"];//接收文件数据.
  5. if (file == null)
  6. {
  7. context.Response.Write("请选择文件!!");
  8. }
  9. else
  10. {
  11. //判断上传的文件的类型.
  12. string fileName= Path.GetFileName(file.FileName);//获取文件名与扩张名. aa.jpg
  13. string fileExt = Path.GetExtension(fileName);//获取扩展名.
  14. if (fileExt == ".jpg"||fileExt==".gif")
  15. {
  16. string dir = "/ImagePath/"+DateTime.Now.Year+"/"+DateTime.Now.Month+"/"+DateTime.Now.Day+"/";
  17. //创建文件夹.
  18. Directory.CreateDirectory(Path.GetDirectoryName(context.Request.MapPath(dir)));
  19. //需要对上传的文件进行重命名.
  20. string newfileName = Guid.NewGuid().ToString();
  21. string fullDir = dir + newfileName + fileExt;//构建了完整文件路径.
  22. // file.SaveAs(context.Request.MapPath(fullDir));
  23. // file.SaveAs(context.Request.MapPath("/ImagePath/"+fileName));//保存文件
  24. using (Image imge = Image.FromStream(file.InputStream))//根据上传的文件流创建Image
  25. {
  26. using (Bitmap map = new Bitmap(imge.Width,imge.Height))
  27. {
  28. using (Graphics g = Graphics.FromImage(map))
  29. {
  30. //设置高质量插值法
  31. g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High;
  32.  
  33. //设置高质量,低速度呈现平滑程度
  34. g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
  35. //先将图片画到画布上.
  36. g.DrawImage(imge, new Rectangle(, , imge.Width, imge.Height));
  37. //在右下角添加水印.
  38. g.DrawString("传智播客", new Font("黑体", 14.0f, FontStyle.Bold), Brushes.Red, new PointF(imge.Width-,imge.Height-));
  39. map.Save(context.Request.MapPath(fullDir),System.Drawing.Imaging.ImageFormat.Jpeg);
  40. }
  41. }
  42. }
  43.  
  44. context.Response.Write("<html><head></head><body><img src='"+fullDir+"'/></body></html>");
  45. //最后将上传成功的图片的路径存储到数据库。
  46. }
  47. else
  48. {
  49. context.Response.Write("文件类型错误!!");
  50. }
  51.  
  52. }
  53. }

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页,不用在显示页码条
  12. {
  13. return string.Empty;
  14. }
  15. //计算起始位置与终止位置。
  16. int start = pageIndex - ;//页面上显示10个数字页码
  17. if (start < )
  18. {
  19. start = ;
  20. }
  21. int end = start + ;//终止位置.
  22. if(end>pageCount)//该条件成立,需要重新计算起始位置
  23. {
  24. end=pageCount;
  25. start = end - >?end-:;
  26. }
  27. StringBuilder sb = new StringBuilder();
  28. if (pageIndex > )
  29. {
  30. sb.Append(string.Format("<a href='?pageIndex={0}'>上一页</a>",pageIndex-));
  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 +));
  46. }
  47. return sb.ToString();
  48. }
  49. }

Aspx 验证码_各种封装的更多相关文章

  1. 七牛云如何绑定二次验证码_虚拟MFA_两步验证_谷歌身份验证器?

    一般情况下,点账户名——账户设置——安全设置,即可开通两步验证 具体步骤见链接  七牛云如何绑定二次验证码_虚拟MFA_两步验证_谷歌身份验证器?   二次验证码小程序(官网)对比谷歌身份验证器APP ...

  2. twitch游戏直播(【国外】平台)如何绑定二次验证码_虚拟MFA?

    一般点账户名——设置——安全设置中开通虚拟MFA两步验证 具体步骤见链接 twitch游戏直播([国外]平台)如何绑定二次验证码_虚拟MFA? 二次验证码小程序于谷歌身份验证器APP的优势(更多见官网 ...

  3. humlbe bundle如何绑定二次验证码_虚拟MFA_两步验证_谷歌身份验证器?

    一般点账户名——设置——安全设置中开通虚拟MFA两步验证 具体步骤见链接 humlbe bundle如何绑定二次验证码_虚拟MFA_两步验证_谷歌身份验证器? 二次验证码小程序于谷歌身份验证器APP的 ...

  4. R星游戏如何绑定二次验证码_虚拟MFA_两步验证_谷歌身份验证器?

    一般点账户名——设置——安全设置中开通虚拟MFA两步验证 具体步骤见链接 R星游戏如何绑定二次验证码_虚拟MFA_两步验证_谷歌身份验证器? 二次验证码小程序于谷歌身份验证器APP的优势 1.无需下载 ...

  5. 关于虎信如何绑定二次验证码_虚拟MFA_两步验证_谷歌身份验证器?

    一般点账户名——设置——安全设置中开通虚拟MFA两步验证 具体步骤见链接 虎信如何绑定二次验证码_虚拟MFA_两步验证_谷歌身份验证器? 二次验证码小程序于谷歌身份验证器APP的优势 1.无需下载ap ...

  6. paypal支付平台如何使用二次验证码_虚拟MFA_两步验证_谷歌身份验证器?

    一般点账户名——设置——安全设置中开通虚拟MFA两步验证 具体步骤见链接 paypal支付平台如何使用二次验证码_虚拟MFA_两步验证_谷歌身份验证器? 二次验证码小程序于谷歌身份验证器APP的优势 ...

  7. 小程序_请求封装network

    在utils目录下创建network.js文件封装请求 封装的network.js: //模块一,全局变量 let urlList = { host: 'http://47.106.25.53/', ...

  8. Java生成验证码_转

    为了防止用户恶意,或者使用软件外挂提交一些内容,就得用验证码来阻止,虽然这个会影响用户体验,但为了避免一些问题很多网站都使用了验证码;今天下午参考文档弄了一个验证码,这里分享一下;这是一个web工程, ...

  9. coding如何绑定二次验证码_虚拟MFA_两步验证_身份验证?

    Coding.net 是一个面向开发者的云端开发平台,提供 Git/SVN 代码托管.任务管理.在线 WebIDE.Cloud Studio.开发协作.文件管理.Wiki 管理.提供个人服务及企业管理 ...

随机推荐

  1. NEKOGAMES

    http://bbs.3dmgame.com/thread-4133434-1-1.html

  2. AngularJs(Part 7)--Build-in Directives

    Directives In AngularJS, we can use a variety of naming conventions to reference directives . In the ...

  3. 树莓派 Learning 003 --- GPIO 001 --- 点亮LED

    树莓派 Learning 003 - GPIO 001 - 点亮LED 我的树莓派型号:Raspberry Pi 2 Model B V1.1 装机系统:NOOBS v1.9.2 树莓派 Learni ...

  4. unreal3对象管理模块分析

    凡是稍微大一点的引擎框架,必然都要自己搞一套对象管理机制,如mfc.qt.glib等等,unreal自然也不例外. 究其原因,还是c++这种静态语言天生的不足,缺乏运行时类型操作功能,对于复杂庞大的逻 ...

  5. python处理大文件——文件流处理

    最近处理一份1000G+的大文件,直接loading进内存不可能,只能分片读取.文件介绍如下: 该文件是一份压缩的比对后文件(sam文件),该文件由很多细小的结构单元组成,一个结构如下: 两种方法: ...

  6. leetcode:234. Palindrome Linked List

    这个题目非常好.http://blog.csdn.net/u012249528/article/details/47124771给出了三种解法,其中前两个是不满足条件的,不过具有参考价值: 第一种办法 ...

  7. Sublime Text 3下安装Emmet的问题

    电脑装了Sublime Text 3,顺便安装了很多插件,今天编写前端HTML代码时,想用起前端常用的Emmet插件的功能,Emmet插件已经安装好了,奈何输入简写格式,按“CTRL+E”,没有反应. ...

  8. 【分析】浅谈C#中Control的Invoke与BeginInvoke在主副线程中的执行顺序和区别(SamWang)

    [分析]浅谈C#中Control的Invoke与BeginInvoke在主副线程中的执行顺序和区别(SamWang) 今天无意中看到有关Invoke和BeginInvoke的一些资料,不太清楚它们之间 ...

  9. Ubuntu 安装 samba 实现文件共享和source insight 阅读uboot

    环境:win10 + 虚拟机Ubuntu 12.04 一. samba的安装: # sudo apt-get install samba # sudo apt-get install smbfs 二. ...

  10. SQL Server事务回滚对自增键的影响

    SQL Server事务回滚时是删除原先插入导致的自增值,也就是回滚之前你你插入一条数据导致自增键加1,回滚之后还是加1的状态 --如果获取当前操作最后插入的identity列的值:select @@ ...