这是页面代码
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

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

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
}

2

3

4

5

6

7

8

9

10

11

12

13



14


15

16

17

18

19



20

21

22

23

24

25

26

27



28

29



30

31

32

33

34

35



36

37

38

39

40

41

42

43

44

45

46

47

48

49

50



51

52

53

54

55

56

57

58

59

60


61

62

63

64

65

66



67

68

69

70



71

72



73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94



95

96

97

98



99

100

101

102

103

104

105


106

107

108

109

110

111

112



113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

140

141

142

143

144

145

146

147

148

149


150

151

152

153

154

155



156

157

158



159

160

161

162

163

164

165

166

167

168

169

170

171

172

173

174

175

176

177

178

179

180

181

182

183

184

185

186

187

188

189

190

191

192

193

194

195


196

197



198

199

200

201

202

203

204

205


206

207

208

209

210



211

212

213

214

215

216
