一个实现图片上传/产生缩略图/在上传图片上写字功能的完整页面代码
2005-09-19 22:07
1341 查看
这是页面代码
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
}
217
}
218
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
}
217
}
218
相关文章推荐
- hchxxzx--》一个实现图片上传/产生缩略图/在上传图片上写字功能的完整页面代码
- 黄聪:如何在wordpress任何一个页面调用“插入图片”按钮,实现上传图片功能
- 如何在wordpress任何一个页面调用“插入图片”按钮,实现上传图片功能
- 黄聪:如何在wordpress任何一个页面调用“插入图片”按钮,实现上传图片功能
- node.js+express 实现CSDN上传头像功能 (包含图片的缩放,生成头像缩略图)
- 实现iOS图片等资源文件的热更新化(五): 一个简单完整的资源热更新页面
- php gd2 上传图片/文字水印/图片水印/等比例缩略图/实现代码
- Servlet+Jsp实现图片或文件的上传功能具体思路及代码
- 一个简单实现了PHP图片上传功能
- 实现文件上传功能,并在页面上显示上传的图片
- vue.js 图片上传并预览及图片更换功能的实现代码
- 使用IO技术,创建一个目录,然后复制一个文件到该目录!实现复制的功能。(在博客园上传的第一份代码)
- 单张图片上传功能完整代码
- 实现iOS图片等资源文件的热更新化(五): 一个简单完整的资源热更新页面
- SilvetLight 实现的一个上传图片时功能动态裁剪部分区域和缩放图片的功能
- 微信小程序多张图片和表单一起上传,验证表单及进度条的实现完整代码
- 一个完整的springmvc + ajaxfileupload实现图片异步上传的案例
- asp.net上传图片自动生成缩略图功能代码
- 图片上传及登录跳转不同页面功能实现简述
- JavaScript中的FileReader图片预览上传功能实现代码