您的位置:首页 > 编程语言 > ASP

asp.net生成高质量缩略图通用函数(c#代码),支持多种生成方式

2008-07-24 13:11 591 查看
/// <summary>


/// 生成缩略图


/// </summary>


/// <param name="originalImagePath">源图路径(物理路径)</param>


/// <param name="thumbnailPath">缩略图路径(物理路径)</param>


/// <param name="width">缩略图宽度</param>


/// <param name="height">缩略图高度</param>


/// <param name="mode">生成缩略图的方式</param>


public static void MakeThumbnail(string originalImagePath, string thumbnailPath, int width, int height, string mode)






{


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格式保存缩略图


bitmap.Save(thumbnailPath, System.Drawing.Imaging.ImageFormat.Jpeg);


}


catch(System.Exception e)






{


throw e;


}


finally






{


originalImage.Dispose();


bitmap.Dispose();


g.Dispose();


}


}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐