C#简单生成缩略图的方法
本文实例讲述了C#简单生成缩略图的方法。分享给大家供大家参考。具体实现方法如下:
///<summary> ///生成缩略图 ///</summary> ///<paramname="originalImagePath">源图路径(物理路径)</param> ///<paramname="thumbnailPath">缩略图路径(物理路径)</param> ///<paramname="width">缩略图宽度</param> ///<paramname="height">缩略图高度</param> ///<paramname="mode">生成缩略图的方式</param> publicstaticvoidMakeThumbnail(stringoriginalImagePath,stringthumbnailPath,intwidth,intheight,stringmode) { ImageoriginalImage=Image.FromFile(originalImagePath); inttowidth=width; inttoheight=height; intx=0; inty=0; intow=originalImage.Width; intoh=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图片 Imagebitmap=newSystem.Drawing.Bitmap(towidth,toheight); //新建一个画板 Graphicsg=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,newRectangle(0,0,towidth,toheight), newRectangle(x,y,ow,oh), GraphicsUnit.Pixel); try { //以jpg格式保存缩略图 bitmap.Save(thumbnailPath,System.Drawing.Imaging.ImageFormat.Jpeg); } catch(System.Exceptione) { throwe; } finally { originalImage.Dispose(); bitmap.Dispose(); g.Dispose(); } }
希望本文所述对大家的C#程序设计有所帮助。