ASP.NET压缩图片

ASP.NET压缩图片

ASP.NET生成缩略图的代码如下:

  •  
  • C# 代码   复制
  • 
    using System.Drawing;
    
    // <summary> 
    /// 生成缩略图 
    /// </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"://指定高宽缩放(可能变形) 
               if (originalImage.Width > originalImage.Height)
              {
                  toheight = originalImage.Height * width / originalImage.Width;
              }
              else
              {
                  towidth = originalImage.Width * height / originalImage.Height;
              }
    
              if (toheight > height)
              {
                  int h = toheight;
                  toheight = height;
                  towidth = towidth * height / h;
              }
    
              if (towidth > width)
              {
                  int w = towidth;
                  towidth = width;
                  toheight = toheight * width / w;
              }        
               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(); 
       } 
    } 
    			

     

  • 标签: