.net C#生成縮略圖實現思路分解_.Net教程

      編輯Tag賺U幣
      教程Tag:暫無Tag,歡迎添加,賺取U幣!

      推薦:c#生成圖片縮略圖的類(2種實現思路)
      4個重載方法,有直接返回Image對象的,有生成縮略圖,并且保存到指定目錄的,具體祥看下文

      復制代碼 代碼如下:www.wf0088.com

      /// 生成縮略圖
      /// </summary>
      /// <param name="originalImagePath">源圖路徑</param>
      /// <param name="thumbnailPath">縮略圖路徑</param>
      /// <param name="width">縮略圖寬度</param>
      /// <param name="height">縮略圖高度</param>
      /// <param name="mode">生成縮略圖的方式:HW指定高寬縮放(可能變形);W指定寬,高按比例 H指定高,寬按比例 Cut指定高寬裁減(不變形)</param>  
      /// <param name="mode">要縮略圖保存的格式(gif,jpg,bmp,png) 為空或未知類型都視為jpg</param>  
      public static void MakeThumbnail(string originalImagePath, string thumbnailPath, int width, int height, string mode, string imageType)
      {
      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格式保存縮略圖
      switch (imageType.ToLower())
      {
      case "gif":
      bitmap.Save(thumbnailPath, System.Drawing.Imaging.ImageFormat.Gif);
      break;
      case "jpg":
      bitmap.Save(thumbnailPath, System.Drawing.Imaging.ImageFormat.Jpeg);
      break;
      case "bmp":
      bitmap.Save(thumbnailPath, System.Drawing.Imaging.ImageFormat.Bmp);
      break;
      case "png":
      bitmap.Save(thumbnailPath, System.Drawing.Imaging.ImageFormat.Png);
      break;
      default:
      bitmap.Save(thumbnailPath, System.Drawing.Imaging.ImageFormat.Jpeg);
      break;
      }
      }
      catch (System.Exception e)
      {
      throw e;
      }
      finally
      {
      originalImage.Dispose();
      bitmap.Dispose();
      g.Dispose();
      }
      }

      分享:C#中遍歷各類數據集合的方法總結
      C#中遍歷各類數據集合的方法,這里自己做下總結:枚舉類型、遍歷ArrayList(Queue、Stack)、Winform窗體中的控件、HashTable哈希表等等,具體祥看下文

      來源:模板無憂//所屬分類:.Net教程/更新時間:2013-05-27
      相關.Net教程