記錄,備忘:
(1)
using System.IO; //添加
(2)
在頁面上放入一個FileUpload控制項,id為“FileUpload1”,和一個“上傳”按鈕,id為“btnUpload”。
/// <summary>
///"上傳"按鈕
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnUpload_Click(object sender, EventArgs e)
{
string serverPath = Server.MapPath("~/images/product");//設定圖片路徑
if(this.FileUpload1.HasFile)
{
string name=FileUpload1.FileName;
string fName = this.txtImageName.Text; //新的圖片名稱,不填則使用原圖片名
//string type=fName.Substring(fName.LastIndexOf(".")+1).ToLower();
string type = name.Substring(name.LastIndexOf(".") + 1).ToLower();
if(string.IsNullOrEmpty(fName))
{
fName = name;
}
else
fName += "." + type;
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();
}