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();
       }
      }

    调用:

  • 相关阅读:
    [转]asp.net页面缓存技术
    UL和LI在div中的高度的IE6下兼容性
    jquery制作的横向图片滚动带横向滚动条TackerScroll
    电脑可以上网,但是qq登陆不上去?
    Introduction to discrete event system学习笔记4.6
    Introduction to Discrete event system学习笔记4.9
    Introduction to discrete event systemsstudy 4.5
    Symbolic synthesis of obserability requirements for diagnosability B.Bittner,M.Bozzano,A.Cimatti,and X.Olive笔记4.16
    Introduction to discrete event system学习笔记4.8pm
    Introduction to discrete event system学习笔记 4.8
  • 原文地址:https://www.cnblogs.com/lisengl/p/2680130.html
Copyright © 2011-2022 走看看