代码如下:
/// <summary>
///
asp.net上传图片并生成缩略图
///
</summary>
///
<param name="upImage">
HtmlInputFile控件
</param>
///
<param name="sSavePath">
保存的路径,些为相对服务器路径的下的文件夹
</param>
///
<param name="sThumbExtension">
缩略图的thumb
</param>
///
<param name="intThumbWidth">
生成缩略图的宽度
</param>
///
<param name="intThumbHeight">
生成缩略图的高度
</param>
///
<returns>
缩略图名称
</returns>
public
string
UpLoadImage(HtmlInputFile upImage,
string
sSavePath,
string
sThumbExtension,
int
intThumbWidth,
int
intThumbHeight)
{
string
sThumbFile
=
""
;
string
sFilename
=
""
;
if
(upImage.PostedFile
!=
null
)
{
HttpPostedFile myFile
=
upImage.PostedFile;
int
nFileLen
=
myFile.ContentLength;
if
(nFileLen
==
0
)
return
"
没有选择上传图片
"
;
//
获取upImage选择文件的扩展名
string
extendName
=
System.IO.Path.GetExtension(myFile.FileName).ToLower();
//
判断是否为图片格式
if
(extendName
!=
"
.jpg
"
&&
extendName
!=
"
.jpge
"
&&
extendName
!=
"
.gif
"
&&
extendName
!=
"
.bmp
"
&&
extendName
!=
"
.png
"
)
return
"
图片格式不正确
"
;
byte
[] myData
=
new
Byte[nFileLen];
myFile.InputStream.Read(myData,
0
, nFileLen);
sFilename
=
System.IO.Path.GetFileName(myFile.FileName);
int
file_append
=
0
;
//
检查当前文件夹下是否有同名图片,有则在文件名+1
while
(System.IO.File.Exists(System.Web.HttpContext.Current.Server.MapPath(sSavePath
+
sFilename)))
{
file_append
++
;
sFilename
=
System.IO.Path.GetFileNameWithoutExtens ion(myFile.FileName)
+
file_append.ToString()
+
extendName;
}
System.IO.FileStream newFile
=
new
System.IO.FileStream(System.Web.HttpContext.Current.Server.MapPath(sSavePath
+
sFilename),
System.IO.FileMode.Create, System.IO.FileAccess.Write);
newFile.Write(myData,
0
, myData.Length);
newFile.Close();
//
以上为上传原图
try
{
//
原图加载
using
(System.Drawing.Image sourceImage
=
System.Drawing.Image.FromFile(System.Web.HttpContext.Current.Server.MapPath(sSavePath
+
sFilename)))
{
//
原图宽度和高度
int
width
=
sourceImage.Width;
int
height
=
sourceImage.Height;
int
smallWidth;
int
smallHeight;
//
获取第一张绘制图的大小,(比较 原图的宽/缩略图的宽 和原图的高/缩略图的高)
if
(((
decimal
)width)
/
height
<=
((
decimal
)intThumbWidth)
/
intThumbHeight)
{
smallWidth
=
intThumbWidth;
smallHeight
=
intThumbWidth
*
height
/
width;
}
else
{
smallWidth
=
intThumbHeight
*
width
/
height;
smallHeight
=
intThumbHeight;
}
//
判断缩略图在当前文件夹下是否同名称文件存在
file_append
=
0
;
sThumbFile
=
sThumbExtension
+
System.IO.Path.GetFileNameWithoutExtens ion(myFile.FileName)
+
extendName;
while
(System.IO.File.Exists(System.Web.HttpContext.Current.Server.MapPath(sSavePath
+
sThumbFile)))
{
file_append
++
;
sThumbFile
=
sThumbExtension
+
System.IO.Path.GetFileNameWithoutExtens ion(myFile.FileName)
+
file_append.ToString()
+
extendName;
}
//
缩略图保存的绝对路径
string
smallImagePath
=
System.Web.HttpContext.Current.Server.MapPath(sSavePath)
+
sThumbFile;
//
新建一个图板,以最小等比例压缩大小绘制原图
using
(System.Drawing.Image bitmap
=
new
System.Drawing.Bitmap(smallWidth, smallHeight))
{
//
绘制中间图
using
(System.Drawing.Graphics g
=
System.Drawing.Graphics.FromImage(bitmap))
{
//
高清,平滑
g.InterpolationMode
=
System.Drawing.Drawing2D.InterpolationMode.High;
g.SmoothingMode
=
System.Drawing.Drawing2D.SmoothingMode.HighQuality;
g.Clear(Color.Black);
g.DrawImage(
sourceImage,
new
System.Drawing.Rectangle(
0
,
0
, smallWidth, smallHeight),
new
System.Drawing.Rectangle(
0
,
0
, width, height),
System.Drawing.GraphicsUnit.Pixel
);
}
//
新建一个图板,以缩略图大小绘制中间图
using
(System.Drawing.Image bitmap1
=
new
System.Drawing.Bitmap(intThumbWidth, intThumbHeight))
{
//
绘制缩略图
using
(System.Drawing.Graphics g
=
System.Drawing.Graphics.FromImage(bitmap1))
{
//
高清,平滑
g.InterpolationMode
=
System.Drawing.Drawing2D.InterpolationMode.High;
g.SmoothingMode
=
System.Drawing.Drawing2D.SmoothingMode.HighQuality;
g.Clear(Color.Black);
int
lwidth
=
(smallWidth
-
intThumbWidth)
/
2
;
int
bheight
=
(smallHeight
-
intThumbHeight)
/
2
;
g.DrawImage(bitmap,
new
Rectangle(
0
,
0
, intThumbWidth, intThumbHeight), lwidth, bheight, intThumbWidth, intThumbHeight, GraphicsUnit.Pixel);
g.Dispose();
bitmap1.Save(smallImagePath, System.Drawing.Imaging.ImageFormat.Jpeg);
}
}
}
}
}
catch
{
//
出错则删除
System.IO.File.Delete(System.Web.HttpContext.Current.Server.MapPath(sSavePath
+
sFilename));
return
"
图片格式不正确
"
;
}
//
返回缩略图名称
return
sThumbFile;
}
return
"
没有选择图片
"
;
}
HtmlInputFile控件我想大家都应该知道的,就是input type = file....
下面把调用代码也一起C上来
<% @ Page Language = " C# " AutoEventWireup = " true " CodeFile = " Default2.aspx.cs " Inherits = " Default2 " %>
<! DOCTYPE html PUBLIC " -//W3C//DTD XHTML 1.0 Transitional//EN " " http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd " >
< html xmlns = " http://www.w3.org/1999/xhtml " >
< head runat = " server " >
<
title
>
无标题页
</
title
>
</ head >
< body >
<
form id
=
"
form1
"
runat
=
"
server
"
>
<
div
>
<
input id
=
"
File1
"
runat
=
"
server
"
type
=
"
file
"
/></
div
><
asp:Button ID
=
"
Button1
"
runat
=
"
server
"
OnClick
=
"
Button1_Click
"
Text
=
"
Button
"
/>
</
form
>
</ body >
</ html >
protected
void
Button1_Click(
object
sender, EventArgs e)
{
string
a
=
this
.UpLoadImage(
this
.File1,
"
UpLoad/
"
,
"
thumb_
"
,
118
,
118
);
}
/// <summary>
HtmlInputFile控件我想大家都应该知道的,就是input type = file....
下面把调用代码也一起C上来
<% @ Page Language = " C# " AutoEventWireup = " true " CodeFile = " Default2.aspx.cs " Inherits = " Default2 " %>
<! DOCTYPE html PUBLIC " -//W3C//DTD XHTML 1.0 Transitional//EN " " http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd " >
< html xmlns = " http://www.w3.org/1999/xhtml " >
< head runat = " server " >
</ head >
< body >
</ body >
</ html >