C#生成縮略圖的函數,可直接調用

xg48 9年前發布 | 3K 次閱讀 C#

C#生成縮略圖的函數,可直接調用,代碼非常簡單,直接嵌入你的項目,調用該函數即可。

  /// <summary>
  /// 生成縮略圖
 /// 轉自:http://www.sharejs.com
  /// </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();
  }

}</pre>

 本文由用戶 xg48 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!