首页 > 编程 > C# > 正文

C#简单生成缩略图的方法

2020-01-24 02:07:12
字体:
来源:转载
供稿:网友

本文实例讲述了C#简单生成缩略图的方法。分享给大家供大家参考。具体实现方法如下:

/// <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(); }}

希望本文所述对大家的C#程序设计有所帮助。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表