zoukankan      html  css  js  c++  java
  • 生成缩略图方法

    #region  生成缩略图
      ///<summary>
      /// 生成缩略图
      /// </summary>
      /// <param name="originalImagePath">源图路径(物理路径)</param>
      /// <param name="thumbnailPath">缩略图路径(物理路径)</param>
      /// <param name="width">缩略图宽度</param>
      /// <param name="height">缩略图高度</param>
      /// <param name="mode">生成缩略图的方式</param>    
      public  void MakeThumbnail(string originalImagePath,  string thumbnailPath, int width, int height, string mode, out string outthumbnailPath)
      {
       System.Drawing.Image originalImage =System.Drawing.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图片
       System.Drawing.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);
        outthumbnailPath=thumbnailPath;
       }
       catch(System.Exception e)
       {
        throw e;
       }
       finally
       {
        originalImage.Dispose();
        bitmap.Dispose();                        
        g.Dispose();
       }
      }

    调用:

  • 相关阅读:
    洛谷
    洛谷
    洛谷
    洛谷
    洛谷
    模板
    模板
    模板
    洛谷
    模板
  • 原文地址:https://www.cnblogs.com/lisengl/p/2680130.html
Copyright © 2011-2022 走看看