ASP.NET中生成缩略图的代码
生活随笔
收集整理的這篇文章主要介紹了
ASP.NET中生成缩略图的代码
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
ASP.NET中生成縮略圖的代碼
先必須導入 using System.Drawing;
?? ? ? ? // <summary> ????????///?生成縮略圖 ????????///?</summary> ????????///?<param?name="originalImagePath">源圖路徑</param> ????????///?<param?name="thumbnailPath">縮略圖路徑</param> ????????///?<param?name="width">縮略圖寬度</param> ????????///?<param?name="height">縮略圖高度</param> ????????///?<param?name="mode">生成縮略圖的方式:HW指定高寬縮放(可能變形);W指定寬,高按比例?H指定高,寬按比例?Cut指定高寬裁減(不變形)</param> ????????///?<param?name="mode">要縮略圖保存的格式(gif,jpg,bmp,png)?為空或未知類型都視為jpg</param> ????????public?static?void?MakeThumbnail(string?originalImagePath,?string?thumbnailPath,?int?width,?int?height,?string?mode,?string?imageType) ????????{ ????????????Image?originalImage?=?Image.FromFile(originalImagePath); ????????????int?towidth?=?width; ????????????int?toheight?=?height; ????????????int?x?=?0; ????????????int?y?=?0; ????????????int?ow?=?originalImage.Width; ????????????int?oh?=?originalImage.Height; ????????????switch?(mode) ????????????{ ????????????????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; ????????????????default: ????????????????????break; ????????????} ????????????//新建一個bmp圖片 ????????????Image?bitmap?=?new?System.Drawing.Bitmap(towidth,?toheight); ????????????//新建一個畫板 ????????????Graphics?g?=?System.Drawing.Graphics.FromImage(bitmap); ????????????//設置高質量插值法 ????????????g.InterpolationMode?=?System.Drawing.Drawing2D.InterpolationMode.High; ????????????//設置高質量,低速度呈現平滑程度 ????????????g.SmoothingMode?=?System.Drawing.Drawing2D.SmoothingMode.HighQuality; ????????????//清空畫布并以透明背景色填充 ????????????g.Clear(Color.Transparent); ????????????//在指定位置并且按指定大小繪制原圖片的指定部分 ????????????g.DrawImage(originalImage,?new?Rectangle(0,?0,?towidth,?toheight), ??????????????new?Rectangle(x,?y,?ow,?oh), ??????????????GraphicsUnit.Pixel); ????????????try ????????????{ ????????????????//以jpg格式保存縮略圖 ????????????????switch?(imageType.ToLower()) ????????????????{ ????????????????????case?"gif": ????????????????????????bitmap.Save(thumbnailPath,?System.Drawing.Imaging.ImageFormat.Gif); ????????????????????????break; ????????????????????case?"jpg": ????????????????????????bitmap.Save(thumbnailPath,?System.Drawing.Imaging.ImageFormat.Jpeg); ????????????????????????break; ????????????????????case?"bmp": ????????????????????????bitmap.Save(thumbnailPath,?System.Drawing.Imaging.ImageFormat.Bmp); ????????????????????????break; ????????????????????case?"png": ????????????????????????bitmap.Save(thumbnailPath,?System.Drawing.Imaging.ImageFormat.Png); ????????????????????????break; ????????????????????default: ????????????????????????bitmap.Save(thumbnailPath,?System.Drawing.Imaging.ImageFormat.Jpeg); ????????????????????????break; ????????????????} ????????????} ????????????catch?(System.Exception?e) ????????????{ ????????????????throw?e; ????????????} ????????????finally ????????????{ ????????????????originalImage.Dispose(); ????????????????bitmap.Dispose(); ????????????????g.Dispose(); ????????????} ????????}
?
總結
以上是生活随笔為你收集整理的ASP.NET中生成缩略图的代码的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 今天的从上往下望去的企业即时通讯
- 下一篇: C++不定长字符串比较合理且简单的解决方