记录,备忘:
(1)
using System.IO; //添加
(2)
在页面上放入一个FileUpload控件,id为“FileUpload1”,和一个“上传”按钮,id为“btnUpload”。
/// <summary>
///"上传"按钮
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected voidbtnUpload_Click(objectsender, EventArgse)
{
stringserverPath = Server.MapPath("~/images/product");//设置图片路径
if(this.FileUpload1.HasFile)
{
stringname=FileUpload1.FileName;
stringfName = this.txtImageName.Text;
if(string.IsNullOrEmpty(fName))
{
fName = name;
}
stringtype = fName.Substring(fName.LastIndexOf(".") + 1).ToLower();
if(type == "jpg"|| type == "png"|| type == "bmp"|| type == "gif"|| type == "jpeg")
{
UpLoadImage(serverPath,fName);//执行上传图片,并生成缩略图
}
else
{
HttpContext.Current.Response.Write("<script>alert('图片格式不对!');</script>");
return;
}
}
else
{
HttpContext.Current.Response.Write(" <script>alert('请选择要上传的文件') </script>");
return;
}
HttpContext.Current.Response.Write(" <script>alert('文件上传成功') </script>");
}
/// <summary>
///执行上传图片操作,并生成缩略图
/// </summary>
/// <param name="serverPath"></param>
/// <param name="fName"></param>
private voidUpLoadImage(stringserverPath, stringfName)
{
if(!File.Exists(serverPath))
{
Directory.CreateDirectory(serverPath);
Directory.CreateDirectory(serverPath + "_thumb");
}
stringfPath = serverPath + "\\"+ fName;//文件实际路径
Stringtpath = serverPath + "_thumb\\"+ fName;//缩略图路径
if(!File.Exists(tpath) && !File.Exists(fPath))
{
this.FileUpload1.SaveAs(fPath);//上传到图片路径
ImageClass.MakeThumbnail(fPath, tpath, 180, 117, "w"); //调用ImageClass类的MakeThumbnail()方法,生成缩略图
this.myImage.ImageUrl = "~/images/product_thumb"+ "\\"+ fName;
}
else
{
HttpContext.Current.Response.Write("<script>alert('图片已存在!');</script>");
return;
}
}
(3)ImageClass类(转,网址忘记了)
//add
usingSystem.Data;
usingSystem.Configuration;
usingSystem.Web.UI;
usingSystem.IO;
/// <summary>
///生成缩略图
/// </summary>
/// <param name="originalImagePath">源图路径(物理路径)</param>
/// <param name="thumbnailPath">缩略图路径(物理路径)</param>
/// <param name="width">缩略图宽度</param>
/// <param name="height">缩略图高度</param>
/// <param name="mode">生成缩略图的方式</param>
public static voidMakeThumbnail(stringoriginalImagePath, stringthumbnailPath, intwidth, intheight, stringmode)
{
System.Drawing.ImageoriginalImage = System.Drawing.Image.FromFile(originalImagePath);
inttowidth = width;
inttoheight = height;
intx = 0;
inty = 0;
intow = originalImage.Width;
intoh = originalImage.Height;
if(ow < towidth && oh < toheight)
{
originalImage.Save(thumbnailPath);
}
else
{
switch(mode.ToUpper())
{
case"HW"://指定高宽缩放(可能变形)
break;
case"W"://指定宽,高按比例
toheight = originalImage.Height * width / originalImage.Width;
break;
case"H"://指定高,宽按比例
towidth = originalImage.Width * height / originalImage.Height;
break;
case"CUT"://指定高宽裁减(不变形)
if((double)originalImage.Width / (double)originalImage.Height > (double)towidth / (double)toheight)
{
oh = originalImage.Height;
ow = originalImage.Height * towidth / toheight;
y = 0;
x = (originalImage.Width - ow) / 2;
}
else
{
ow = originalImage.Width;
oh = originalImage.Width * height / towidth;
x = 0;
y = (originalImage.Height - oh) / 2;
}
break;
case"AUTO": //自动适应高度
if(ow > oh)
{
//newwidth = 200;
toheight = (int)((double)oh / (double)ow * (double)towidth);
}
else
{
//newheight = 200;
towidth = (int)((double)ow / (double)oh * (double)toheight);
}
break;
default:
break;
}
//新建一个bmp图片
System.Drawing.Imagebitmap = newSystem.Drawing.Bitmap(towidth, toheight);
//新建一个画板
System.Drawing.Graphicsg = System.Drawing.Graphics.FromImage(bitmap);
//设置高质量插值法
g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High;
//设置高质量,低速度呈现平滑程度
g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
//清空画布并以透明背景色填充
g.Clear(System.Drawing.Color.Transparent);
//在指定位置并且按指定大小绘制原图片的指定部分
g.DrawImage(originalImage, newSystem.Drawing.Rectangle(0, 0, towidth, toheight),
newSystem.Drawing.Rectangle(x, y, ow, oh),
System.Drawing.GraphicsUnit.Pixel);
try
{
//以jpg格式保存缩略图
bitmap.Save(thumbnailPath, System.Drawing.Imaging.ImageFormat.Jpeg);
}
catch(System.Exceptione)
{
throwe;
}
finally
{
bitmap.Dispose();
g.Dispose();
}
}
originalImage.Dispose();
}