• C#生成缩略图


    1. /// 生成缩略图   
    2.     /// </summary>   
    3.     /// <param name="originalImagePath">源图路径</param>   
    4.     /// <param name="thumbnailPath">缩略图路径</param>   
    5.     /// <param name="width">缩略图宽度</param>   
    6.     /// <param name="height">缩略图高度</param>   
    7.     /// <param name="mode">生成缩略图的方式:HW指定高宽缩放(可能变形);W指定宽,高按比例 H指定高,宽按比例 Cut指定高宽裁减(不变形)</param>     
    8.     /// <param name="mode">要缩略图保存的格式(gif,jpg,bmp,png) 为空或未知类型都视为jpg</param>     
    9.     public static void MakeThumbnail(string originalImagePath, string thumbnailPath, int width, int height, string mode, string imageType)  
    10.     {  
    11.         Image originalImage = Image.FromFile(originalImagePath);  
    12.         int towidth = width;  
    13.         int toheight = height;  
    14.         int x = 0;  
    15.         int y = 0;  
    16.         int ow = originalImage.Width;  
    17.         int oh = originalImage.Height;  
    18.         switch (mode)  
    19.         {  
    20.             case "HW"://指定高宽缩放(可能变形)           
    21.                 break;  
    22.             case "W"://指定宽,高按比例             
    23.                 toheight = originalImage.Height * width / originalImage.Width;  
    24.                 break;  
    25.             case "H"://指定高,宽按比例   
    26.                 towidth = originalImage.Width * height / originalImage.Height;  
    27.                 break;  
    28.             case "Cut"://指定高宽裁减(不变形)           
    29.                 if ((double)originalImage.Width / (double)originalImage.Height > (double)towidth / (double)toheight)  
    30.                 {  
    31.                     oh = originalImage.Height;  
    32.                     ow = originalImage.Height * towidth / toheight;  
    33.                     y = 0;  
    34.                     x = (originalImage.Width - ow) / 2;  
    35.                 }  
    36.                 else  
    37.                 {  
    38.                     ow = originalImage.Width;  
    39.                     oh = originalImage.Width * height / towidth;  
    40.                     x = 0;  
    41.                     y = (originalImage.Height - oh) / 2;  
    42.                 }  
    43.                 break;  
    44.             default:  
    45.                 break;  
    46.         }  
    47.         //新建一个bmp图片   
    48.         Image bitmap = new System.Drawing.Bitmap(towidth, toheight);  
    49.         //新建一个画板   
    50.         Graphics g = System.Drawing.Graphics.FromImage(bitmap);  
    51.         //设置高质量插值法   
    52.         g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High;  
    53.         //设置高质量,低速度呈现平滑程度   
    54.         g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;  
    55.         //清空画布并以透明背景色填充   
    56.         g.Clear(Color.Transparent);  
    57.         //在指定位置并且按指定大小绘制原图片的指定部分   
    58.         g.DrawImage(originalImage, new Rectangle(0, 0, towidth, toheight),  
    59.            new Rectangle(x, y, ow, oh),  
    60.            GraphicsUnit.Pixel);  
    61.         try  
    62.         {  
    63.             //以jpg格式保存缩略图   
    64.             switch (imageType.ToLower())  
    65.             {  
    66.                 case "gif":  
    67.                     bitmap.Save(thumbnailPath, System.Drawing.Imaging.ImageFormat.Gif);  
    68.                     break;  
    69.                 case "jpg":  
    70.                     bitmap.Save(thumbnailPath, System.Drawing.Imaging.ImageFormat.Jpeg);  
    71.                     break;  
    72.                 case "bmp":  
    73.                     bitmap.Save(thumbnailPath, System.Drawing.Imaging.ImageFormat.Bmp);  
    74.                     break;  
    75.                 case "png":  
    76.                     bitmap.Save(thumbnailPath, System.Drawing.Imaging.ImageFormat.Png);  
    77.                     break;  
    78.                 default:  
    79.                     bitmap.Save(thumbnailPath, System.Drawing.Imaging.ImageFormat.Jpeg);  
    80.                     break;  
    81.             }  
    82.         }  
    83.         catch (System.Exception e)  
    84.         {  
    85.             throw e;  
    86.         }  
    87.         finally  
    88.         {  
    89.             originalImage.Dispose();  
    90.             bitmap.Dispose();  
    91.             g.Dispose();  
    92.         }  
    93.     }  

     

     

    ==================================

    C#生成缩略图 (通用模式) 
    
    
    用数据库保存图片的路径和文件名称,把文件保存在文件夹中.
    //保存在数据库中的文件路径
    ArrayList arrFilePath=new ArrayList();
    arrFilePath=myCommonMethod.UploadPic(Files,"/UpLoads/UpPicture/");
    //获取文件名称
    string fileName=arrFilePath[0].SubString(arrFilePath[0].LastIndexOf("/")+1);
    //源图路径(物理路径)
    originalImagePath=Request.PhysicalApplicationPath+"/UpLoads/UpPicture/"+fileName;
    //缩略图路径(物理路径)
    thumbnailPath     =Request.PhysicalApplicationPath+"/UpLoads/UpPicture/"+"thumb_"+fileName;
    //调用生成缩略图方法
    this.MakeThumbnail(originalImagePath,thumbnailPath,120,150, strMode out outthumbnailPath);
    
    #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(); 
       } 
      } 
  • 相关阅读:
    JAVA与编译语言及解释语言的关系
    Java虚拟机工作原理详解
    VMWare 网络连接模式(bridged、NAT、host-only)详解
    Ubuntu修改语言环境为英文
    Ubuntu安装和设置SSH服务
    Eclipse NDK 配置
    2018年长沙理工大学第十三届程序设计竞赛
    埃森哲杯第十六届上海大学程序设计联赛春季赛暨上海高校金马五校赛
    算法训练 安慰奶牛
    算法训练 最短路
  • 原文地址:https://www.cnblogs.com/qq260250932/p/5293883.html
Copyright © 2020-2023  润新知