hchxxzx--》一个实现图片上传/产生缩略图/在上传图片上写字功能的完整页面代码

这是页面代码

 1 <% @ Page language = " c# "  Codebehind = " pic.aspx.cs "  AutoEventWireup = " false "  Inherits = " test.pic "   %>
 2 < HTML >
 3      < HEAD >
 4          < title > pic </ title >
 5          < meta name = " GENERATOR "  Content = " Microsoft Visual Studio .NET 7.1 " >
 6          < meta name = " CODE_LANGUAGE "  Content = " C# " >
 7          < meta name = " vs_defaultClientScript "  content = " JavaScript " >
 8          < meta name = " vs_targetSchema "  content = " http://schemas.microsoft.com/intellisense/ie5 " >
 9      </ HEAD >
10      < body >
11          < form id = " Form1 "  method = " post "  runat = " server " >
12              < INPUT id = " File1 "  type = " file "  name = " File1 "  runat = " server " >
13              < asp:button id = " Button1 "  runat = " server "  Text = " Button " ></ asp:button >< BR >
14              < table border = " 0 "  width = " 100% " >
15                  < tr >
16                      < td >
17                          < asp:Image id = " Image1 "  runat = " server "  Width = " 200px " ></ asp:Image >
18                      </ td >
19                      < td >
20                          < asp:Image id = " Image2 "  runat = " server "  Width = " 200px " ></ asp:Image >
21                      </ td >
22                      < td >
23                          < asp:Image id = " Image3 "  runat = " server "  Width = " 100px " ></ asp:Image >
24                      </ td >
25                  </ tr >
26              </ table >
27          </ form >
28      </ body >
29 </ HTML >
30

以下是后台代码
  1 using  System;
  2 using  System.Collections;
  3 using  System.ComponentModel;
  4 using  System.Data;
  5 using  System.Drawing;
  6 using  System.Web;
  7 using  System.Web.SessionState;
  8 using  System.Web.UI;
  9 using  System.Web.UI.WebControls;
 10 using  System.Web.UI.HtmlControls;
 11
 12 namespace  test
 13 {
 14    /// <summary>
 15    /// pic 的摘要说明。
 16    /// 功能:图片上传/保存至硬盘/生成缩略图/在图片上写字
 17    /// </summary>

 18    public class pic : System.Web.UI.Page
 19    {
 20        protected System.Web.UI.WebControls.Button Button1;
 21        protected System.Web.UI.WebControls.Image Image1;
 22        protected System.Web.UI.WebControls.Image Image2;
 23        protected System.Web.UI.WebControls.Image Image3;
 24        protected System.Web.UI.HtmlControls.HtmlInputFile File1;
 25    
 26        private void Page_Load(object sender, System.EventArgs e)
 27        {
 28            if(!this.IsPostBack)
 29            {
 30                //接收参数
 31                string filename = this.Request.QueryString["filename"];
 32                //如果参数不为空
 33                //此处这样写,是一个比较安全全的写法,因为接收到的参数值也许是NULL
 34                if(filename + "a" != "a")
 35                {
 36                    //求取后缀名
 37                    string suffix = filename.Substring(filename.LastIndexOf("."));
 38                    //显示图片
 39                    //分别为原图片/写字的图片(多一个w)/缩略图(多一个x)
 40                    this.Image1.ImageUrl = this.Server.MapPath("uploadfile/" + filename);
 41                    this.Image2.ImageUrl = this.Server.MapPath("uploadfile/" + filename.Replace(suffix,"w" + suffix));
 42                    this.Image3.ImageUrl = this.Server.MapPath("uploadfile/" + filename.Replace(suffix,"x" + suffix));
 43
 44                    //显示图像控件
 45                    this.Image1.Visible = true;
 46                    this.Image2.Visible = true;
 47                    this.Image3.Visible = true;
 48                }

 49                else
 50                {
 51                    //如果没有接收到参数,则隐藏页面中的图像控件
 52                    this.Image1.Visible = false;
 53                    this.Image2.Visible = false;
 54                    this.Image3.Visible = false;
 55                }

 56            }

 57        }

 58
 59
 60        /// <summary>
 61        /// 上传图片
 62        /// </summary>
 63        /// <param name="sender"></param>
 64        /// <param name="e"></param>

 65        private void Button1_Click(object sender, System.EventArgs e)
 66        {
 67            //接收上传图片 
 68            System.Web.HttpPostedFile myPost = this.Request.Files[0];
 69            if(myPost.ContentLength !=0)
 70            {
 71                try
 72                {
 73                    //定义上传路径(在当前目录下的uploadfile文件病例
 74                    string uploadpath = this.Server.MapPath("uploadfile");
 75                    //取得文件名
 76                    string tmpfilename = myPost.FileName;
 77                    //文件名
 78                    string filename = tmpfilename.Substring(tmpfilename.LastIndexOf("//"+ 1);
 79
 80                    //原文件的保存路径
 81                    string fileSavePath = uploadpath + "//" + filename;
 82
 83                    //保存原图片            
 84                    myPost.SaveAs(fileSavePath);
 85                
 86                    //调用生成缩略图程序,生成缩略图及生成写字的图片
 87                    this.toImage(myPost.InputStream,uploadpath,filename);
 88
 89                    //完成之后,重定向本页面,并带参数显示当前上传的图片 
 90                    this.Response.Redirect("pic.aspx?filename=" + filename);
 91                    this.Response.End();
 92                }

 93                catch(Exception ex)
 94                {
 95                    throw ex;
 96                }

 97                finally
 98                {
 99                    
100                }

101            }

102        }

103
104
105        /// <summary>
106        /// 生成缩略图程序
107        /// </summary>
108        /// <param name="myStream">取到的流文件对象</param>
109        /// <param name="uploadPath">要保存的路径</param>
110        /// <param name="picName">上传的图片原文件名</param>

111        private void toImage(System.IO.Stream myStream,string uploadPath,string picName)
112        {
113            //取得后缀名
114            string suffix = picName.Substring(picName.LastIndexOf("."));
115
116            //缩略图的保存路径
117            string fileXltPath = uploadPath + "//" + picName.Replace(suffix,"x" + suffix);
118            //写字图的保存路径
119            string fileXztPath = uploadPath + "//" + picName.Replace(suffix,"w" + suffix);
120
121
122            //创建一个图像对象取得上传图片对象
123            System.Drawing.Image myImage = System.Drawing.Image.FromStream(myStream,false);
124            //对绘制前的图片产生一个缩略图(原图片一半大小)
125            System.Drawing.Image thumbImage = myImage.GetThumbnailImage(myImage.Size.Width/2,myImage.Size.Height/2,null,System.IntPtr.Zero);
126            //保存缩略图
127            thumbImage.Save(fileXltPath,this.getImageFormat(suffix));
128            //关闭缩略图对象
129            thumbImage.Dispose();
130
131            //创建绘制对象
132            System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(myImage);
133            g.DrawImage(myImage,0,0,myImage.Size.Width,myImage.Size.Height);
134            //选择字体及字体大小
135            System.Drawing.Font f = new Font("隶书",140);
136            //定义字体颜色
137            System.Drawing.Brush b = new SolidBrush(System.Drawing.Color.Red);
138            //开始绘制,根据上述两种设定,添加绘制的上左位置
139            g.DrawString("好好学习,天天向上",f,b,10,10);
140            //关闭绘制对象
141            g.Dispose();
142
143            //保存绘制后上传图片
144            myImage.Save(fileXztPath,myImage.RawFormat);
145            //关闭图片对象
146            myImage.Dispose();
147        }

148
149        /// <summary>
150        /// 根据图片的后缀名,返回要保存的图片格式
151        /// </summary>
152        /// <param name="suffix">带.号的后缀名</param>
153        /// <returns>返回System.Drawing.Imaging.ImageForma对象</returns>

154        private System.Drawing.Imaging.ImageFormat getImageFormat(string suffix)
155        {
156          System.Drawing.Imaging.ImageFormat myFormat;
157          switch(suffix.ToLower())
158          {
159            case ".bmp":
160              myFormat = System.Drawing.Imaging.ImageFormat.Bmp;
161              break;
162            case ".emf":
163              myFormat = System.Drawing.Imaging.ImageFormat.Emf;
164              break;
165            case ".exif":
166              myFormat = System.Drawing.Imaging.ImageFormat.Exif;
167              break;
168            case ".gif":
169              myFormat = System.Drawing.Imaging.ImageFormat.Gif;
170              break;
171            case ".icon":
172              myFormat = System.Drawing.Imaging.ImageFormat.Icon;
173              break;
174            case ".jpeg":
175            case ".jpg":
176              myFormat = System.Drawing.Imaging.ImageFormat.Jpeg;
177              break;
178            case ".png":
179              myFormat = System.Drawing.Imaging.ImageFormat.Png;
180              break;
181            case ".tiff":
182              myFormat = System.Drawing.Imaging.ImageFormat.Tiff;
183              break;
184            case ".wmf":
185              myFormat = System.Drawing.Imaging.ImageFormat.Wmf;
186              break;
187            default:
188              myFormat = System.Drawing.Imaging.ImageFormat.MemoryBmp;
189              break;
190          }

191          return(myFormat);
192        }

193
194
195        #region Web 窗体设计器生成的代码
196        override protected void OnInit(EventArgs e)
197        {
198            //
199            // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
200            //
201            InitializeComponent();
202            base.OnInit(e);
203        }

204        
205        /// <summary>
206        /// 设计器支持所需的方法 - 不要使用代码编辑器修改
207        /// 此方法的内容。
208        /// </summary>

209        private void InitializeComponent()
210        {    
211            this.Button1.Click += new System.EventHandler(this.Button1_Click);
212            this.Load += new System.EventHandler(this.Page_Load);
213
214        }

215        #endregion

216    }

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值