您的位置:首页 > 编程语言

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

2006-04-26 18:18 1251 查看
这是页面代码

 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



        Web 窗体设计器生成的代码#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

    }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐