• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >ASP.NET > ASP.NET图片处理三类经典问题

ASP.NET图片处理三类经典问题

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-11

通过本文主要向大家介绍了上传图片 asp.net,asp.net,asp net培训,asp和asp.net的区别,零基础学asp.net等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

 我们在做web程序的时候经常会遇到一些图片处理的问题,今天就把遇到的需要图片处理的地方给总结一下。也算是对自己学习过程的一个总结,希望也能给大家一些启发。
一、验证码。
我们在某些网站注册或者登录的时候,都可能遇到要填写验证码的地方,当时没搞懂这样的图片是怎样一回事,事实上这是一张随机生成的图片,需要在后台专门新建一个aspx页或者ashx一般程序处理页来专门负责生成这样的图片。下面就通过示例向大家演示这样的一个过程!
首先我们新建一个登录页,模拟用户登录。代码如下: 

<div>
 <table>
 <tr><td>账号:</td><td>
  <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox></td></tr>
 <tr><td>密码:</td><td>
  <asp:TextBox ID="TextBox2" runat="server" TextMode="Password"></asp:TextBox></td></tr>
 <tr><td>验证码:</td><td>
  <asp:Image ID="Image1" runat="server" ImageUrl="ValidateNo.aspx" /></td></tr>
 <tr><td>请输入:</td><td>
  <asp:TextBox ID="txtyzm" runat="server"></asp:TextBox></td></tr>
  <tr><td>
   <asp:Button ID="btndl" runat="server" Text="登录" onclick="btndl_Click" /></td><td>
    <asp:Button ID="Button2" runat="server" Text="取消" CausesValidation=false /></td></tr>
 </table>
 </div>
</div>

布局如图:

然后再新建一个ValidateNo.aspx页,用来生成验证码图片,在这个aspx页中只需要在构造函数中写如下代码即可:

protected void Page_Load(object sender, EventArgs e)
  {
   Random r = new Random();
   int i = r.Next(1000, 9999);//生成一个四位的随机数
   Bitmap bit = new Bitmap(100, 40);//生成一个尺寸为100,40的位图
   Graphics g = Graphics.FromImage(bit);//创建一个绘图实例,并以上边创建的的位图为画板,当然这里边也以选择一张已有的图片作为画板。只需要将FromImage()里的参数换位已存在的Image对象即可
   g.DrawLine(new Pen(Brushes.Blue), new Point(0, 10), new Point(100, 10));
   g.DrawLine(new Pen(Brushes.GreenYellow), new Point(0, 25), new Point(100, 25));//画两条直线,起到一定的模糊验证的码的效果
   g.DrawString(i.ToString(), new Font("宋体", 30), Brushes.Green, new PointF(0, 0));//将生成的四位数的验证码绘到该画板上
   bit.Save(Response.OutputStream, ImageFormat.Jpeg);//将该位图保存为JPEG的格式
   Session["ValidateNo"] = i.ToString();//Seession值保存生成的验证码的值,以便在登录的时候和用户输入的验证码的值做比较
   Response.ContentType = "image/jpeg";//将输入类型改为“Image/jpeg"
   Response.End();
  }
</div>

刚刚我们在代码里有说到将生成的随机验证码保存在seesion中,那么我们在登录的时候就可以根据session中值的和用户输入的值做比较,以此来判断用户输入验证码是否正确,所以我们在登录页的aspx.cs页做出这样的处理:(这里只是模拟测试,在实际的开发中,如果验证码、密码、账号都正确的话,就会导向新的页面)

protected void btndl_Click(object sender, EventArgs e)
  {
   if (Session["ValidateNo"] != null)
   {
    string s = Session["ValidateNo"].ToString();
    if (txtyzm.Text != s)
    {
     Response.Write("<script>alert('"+s+"')</script>");
    }
    else
    {
     Response.Write("<script>alert('OK')</script>");
    }
   }
   else
   {
    Response.Write("<script>alert('验证码暂不存在!')</script>");
   }
  }
</div>

二、给图片加文字

有时候我们会看到有些个人空间或主页的图片都加有相应的文字,就像腾讯微博那种发一张图片会显示腾讯微博字样。下面我就给大家展示下如何在图片上添加文字。

首先我们新建一个aspx页,页面布局如下:

 <table style="background:lightblue"><tr><td>选择上传文件:</td><td><asp:FileUpload ID="FileUpload1" runat="server" /></td><td>
   <asp:Button ID="btnupload" runat="server" Text="上传图片"
    onclick="btnupload_Click" /></td></tr>
  <tr><td colspan="3">
   <asp:Image ID="TouXiang" runat="server" /></tr>
 </table> 
然后我们在btnuplod按钮的Click事件的处理函数中做如下操作:
 
protected void btnupload_Click(object sender, EventArgs e)
  {
   if (FileUpload1.FileName.Trim() != "")
   {
    string extension = Path.GetExtension(FileUpload1.FileName);//先获取文件的后缀
    string fileName = DateTime.Now.Year.ToString() + DateTime.Now.Month.ToString() + DateTime.Now.Minute.ToString();//以当前的日期,以年月分的格式为上传的图片重命名
    string path = Server.MapPath(".")+"\\images\\"+fileName + extension;
    FileUpload1.PostedFile.SaveAs(path);//将图片保存在指定路径下
    Bitmap img = new Bitmap(path);//新建一个Bitmap对象并以此为画板
    Graphics g = Graphics.FromImage(img);
    g.DrawString("Hello Olive!", new Font("宋体", 30), Brushes.GreenYellow, new PointF(20,20) );//将"Hello Olive"书写在图片的(20,20)处
    g.Dispose();
    newPath = Server.MapPath(".") + "\\images\\" + fileName + "_New" + extension;
    img.Save(newPath);//将加有文字的图片重新命名并保存,并删除原来的图片
    img.Dispose();
    if (File.Exists(path))
    {
     File.Delete(path);
    }
    touxiangpath="~/images/" + fileName + "_New" + extension;
   }
   else
   {
    Response.Write("<script>alert('请先选择要上传的文件!')</script>");
   }
  }
</div>

效果如图:

三、生成略缩图
现在的很多博客、个人主页、空间之类的都有编辑个人信息的设置,在编辑个人信息的时候都可能会需要上传头像,下面我们来讲一下如何生成略缩头像。
页面布局的话我们还是引用上边的布局:
但是要在<table></table>再加一行,用来显示生成的略缩图。
首先我们需要新建一个CutImage类CutImage.cs,专门用来对图片进行缩放,如下:
       /// <summary>(该图片缩放的代码参考自博客园博主king-两色天)
        /// 截取图片
        /// </summary>
        /// <param name="oPath">原图片路径</param>
        /// <param name="nPaht">新图片路径</param>
        /// <param name="w">略缩图的宽度</param>
        /// <param name="h">略缩图的高度</param>
        /// <param name="mode">截取模式</param>
 代码:   

public static void CutImg(string oPath, string nPaht, int w, int h,string mode)
  {
   Image oimg = Image.FromFile(oPath);
   int nToWidth = w;
   int nToHeight = h;
   int x = 0;
   int y = 0;
   int oWidth = oimg.Width;
   int oHeight = oimg.Height;
   switch (mode)
   {
    case "HW"://按照指定的宽高进行缩放,可能变形
     break;
    case "W"://指定宽度,高按比例缩放
     nToHeight = oWidth * oHeight / nToWidth;
     break;
    case "H"://指定高度,宽按比例缩放
     nToWidth=oWidth*oHeight/nToHeight;
     break;
    case "CUT"://按照指定的宽、高缩放
     if ((oimg.Width / oimg.Height) > (nToWidth / nToHeight))
     {
      oHeight = oim



 
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • ASP.NET实现上传Excel功能
  • asp.net图片文件的上传与删除方法
  • ASP.NET图片处理三类经典问题
  • Asp.Net上传图片同时生成高清晰缩略图
  • ASP.NET中图片显示方法实例
  • ASP.NET实现图片以二进制的形式存入数据库
  • asp.net文件上传示例分享
  • ASP.net判断上传文件类型的三种有效方法
  • asp.net图片上传实例
  • ASP.net WebAPI 上传图片实例

相关文章

  • 2017-05-11使用正则Regex来移除网页的EnableViewState实现思路及代码
  • 2017-05-11ASP.NET怎么操作DataTable实例应用
  • 2017-05-11VS2015 免费插件Refactoring Essentials
  • 2017-05-11.net搜索查询并实现分页实例
  • 2017-05-11ASP.NET连接数据库并获取数据方法总结
  • 2017-05-11asp.net Repeater绑定时使用函数
  • 2017-05-11asp.net实现XML文件读取数据绑定到DropDownList的方法
  • 2017-05-11asp.net url重写的好处与方法
  • 2018-08-20CKEditor与dotnetcore实现图片上传功能
  • 2017-05-11VS2015下OpenGL库配置教程

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • TreeView创建IHierarchicalDataSource类型的数据源实现
    • ASP.NET页面请求处理介绍
    • ASP.NET WebAPI连接数据库的方法
    • ASP.NET XmlHttp跨域访问实现代码
    • SQL Server LocalDB 在 ASP.NET中的应用介绍
    • 《解剖PetShop》之五:PetShop之业务逻辑层设计
    • asp.net异步获取datatable并显示的实现方法
    • ASP.NET 程序优化 小结
    • .Net笔记:System.IO之windows文件操作的深入分析
    • 浅谈ASP.NET常用数据绑定控件优劣总结

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有