[C#] 生成缩略图 →→→→→进入此内容的聊天室

来自 , 2021-01-22, 写在 C#, 查看 107 次.
URL http://www.code666.cn/view/02f657d5
  1.     /// <summary>
  2.     /// 生成缩略图
  3.     /// </summary>
  4.     /// <param name="originalImagePath">源图路径(物理路径)</param>
  5.     /// <param name="thumbnailPath">缩略图路径(物理路径)</param>
  6.     /// <param name="width">缩略图宽度</param>
  7.     /// <param name="height">缩略图高度</param>
  8.     /// <param name="mode">生成缩略图的方式</param>    
  9.     public static void MakeThumbnail(string originalImagePath, string thumbnailPath, int width, int height, string mode)
  10.     {
  11.         Image originalImage = Image.FromFile(originalImagePath);
  12.  
  13.         int towidth = width;
  14.         int toheight = height;
  15.  
  16.         int x = 0;
  17.         int y = 0;
  18.         int ow = originalImage.Width;
  19.         int oh = originalImage.Height;
  20.  
  21.         switch (mode)
  22.         {
  23.             case "HW"://指定高宽缩放(可能变形)                
  24.                 break;
  25.             case "W"://指定宽,高按比例                    
  26.                 toheight = originalImage.Height * width / originalImage.Width;
  27.                 break;
  28.             case "H"://指定高,宽按比例
  29.                 towidth = originalImage.Width * height / originalImage.Height;
  30.                 break;
  31.             case "Cut"://指定高宽裁减(不变形)                
  32.                 if ((double)originalImage.Width / (double)originalImage.Height > (double)towidth / (double)toheight)
  33.                 {
  34.                     oh = originalImage.Height;
  35.                     ow = originalImage.Height * towidth / toheight;
  36.                     y = 0;
  37.                     x = (originalImage.Width - ow) / 2;
  38.                 }
  39.                 else
  40.                 {
  41.                     ow = originalImage.Width;
  42.                     oh = originalImage.Width * height / towidth;
  43.                     x = 0;
  44.                     y = (originalImage.Height - oh) / 2;
  45.                 }
  46.                 break;
  47.             default:
  48.                 break;
  49.         }
  50.  
  51.         //新建一个bmp图片
  52.         Image bitmap = new System.Drawing.Bitmap(towidth, toheight);
  53.  
  54.         //新建一个画板
  55.         Graphics g = System.Drawing.Graphics.FromImage(bitmap);
  56.  
  57.         //设置高质量插值法
  58.         g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High;
  59.  
  60.         //设置高质量,低速度呈现平滑程度
  61.         g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
  62.  
  63.         //清空画布并以透明背景色填充
  64.         g.Clear(Color.Transparent);
  65.  
  66.         //在指定位置并且按指定大小绘制原图片的指定部分
  67.         g.DrawImage(originalImage, new Rectangle(0, 0, towidth, toheight),
  68.             new Rectangle(x, y, ow, oh),
  69.             GraphicsUnit.Pixel);
  70.  
  71.         try
  72.         {
  73.             //以jpg格式保存缩略图
  74.             bitmap.Save(thumbnailPath, System.Drawing.Imaging.ImageFormat.Jpeg);
  75.         }
  76.         catch (System.Exception e)
  77.         {
  78.             throw e;
  79.         }
  80.         finally
  81.         {
  82.             originalImage.Dispose();
  83.             bitmap.Dispose();
  84.             g.Dispose();
  85.         }
  86. }

回复 "生成缩略图"

这儿你可以回复上面这条便签

captcha