asp.net2.0 上傳圖片(FileUpload控制元件) 並生成縮圖
記錄,備忘:
(1)
using System.IO; //新增
(2)
在頁面上放入一個FileUpload控制元件,id為“FileUpload1”,和一個“上傳”按鈕,id為“btnUpload”。
///
///
///
///
///
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(");
return;
}
}
else
{
HttpContext.Current.Response.Write("
return;
}
HttpContext.Current.Response.Write("
}
///
///
///
///
///
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(");
return;
}
}
(3)ImageClass類(轉,網址忘記了)
//add
usingSystem.Data;
usingSystem.Configuration;
usingSystem.Web.UI;
usingSystem.IO;
///
///
///
/// 源圖路徑(物理路徑)
/// 縮圖路徑(物理路徑)
/// 縮圖寬度
/// 縮圖高度
/// 生成縮圖的方式
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)
{
h = originalImage.Height;
w = originalImage.Height * towidth / toheight;
y = 0;
x = (originalImage.Width - ow) / 2;
}
else
{
w = originalImage.Width;
h = 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();
}
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12639172/viewspace-626021/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- asp.net 使用FileUpload控制元件上傳並顯示圖片ASP.NET控制元件
- asp.net上傳圖片並同時生成縮圖 (轉)ASP.NET
- asp.net上傳圖片生成縮圖ASP.NET
- 用ASP.NET上傳圖片並生成可帶版權資訊的縮圖 (轉)ASP.NET
- vue 上傳圖片進行壓縮圖片Vue
- js上傳圖片壓縮JS
- 前端圖片壓縮及上傳前端
- vue+element 將圖片壓縮並轉換成base64上傳圖片Vue
- java,springboot + thymeleaf 上傳圖片、刪除圖片到伺服器、本地,壓縮圖片上傳(有些圖片會失真),原圖上傳JavaSpring Boot伺服器
- 上傳圖片生成base64
- JS—圖片壓縮上傳(單張)JS
- React圖片上傳元件react-fileupload的使用方法React元件
- 前端的圖片壓縮image-compressor(可在圖片上傳前實現圖片壓縮)前端
- javauploadify上傳圖片並預覽Java
- 17-檔案上傳+生成縮圖薦
- layui中實現上傳圖片壓縮UI
- 上傳圖片
- Android壓縮圖片後再上傳圖片Android
- 利用vue-cropper剪裁圖片並上傳Vue
- 怎麼轉換圖片格式並壓縮圖片
- Java實現圖片上傳到伺服器,並把上傳的圖片讀取出來Java伺服器
- 一個Vue圖片上傳剪裁壓縮元件Vue元件
- 圖片上傳及圖片處理
- Retrofit+RxJava上傳圖片上傳圖片到後臺RxJava
- 【easyui 】上傳圖片UI
- 上傳圖片jsJS
- 將上傳圖片打上防偽圖片水印並寫入資料庫資料庫
- 圖片裁剪並上傳到阿里雲oss阿里
- python使用pillow和opencv生成圖片縮圖PythonOpenCV
- Android如何壓縮圖片上傳服務端Android服務端
- PbootCMS上傳圖片被壓縮怎麼解決boot
- php圖片上傳之圖片轉換PHP
- AlamofireImage 使用 – swift載入網路圖片,縮放圖片,生成圓形圖片Swift
- nginx 生成 縮圖 and 生成縮圖到硬碟Nginx硬碟
- 生成 Charts 圖片,併傳送 Charts 圖片郵件
- 使用tinypng對需要上傳Gitee圖床的圖片進行壓縮Gitee圖床
- vue 實現剪裁圖片並上傳伺服器Vue伺服器
- El-Upload元件上傳圖片並新增水印元件