zoukankan      html  css  js  c++  java
  • asp.net生成高质量缩略图通用函数(c#代码)

    ///   <summary>   
                      
    ///   生成缩略图   
                      
    ///   </summary>   
                      
    ///   <param   name="originalImagePath">源图路径(物理路径)</param>   
                      
    ///   <param   name="thumbnailPath">缩略图路径(物理路径)</param>   
                      
    ///   <param   name="width">缩略图宽度</param>   
                      
    ///   <param   name="height">缩略图高度</param>   
                      
    ///   <param   name="mode">生成缩略图的方式</param>           

                      public   static   void   MakeThumbnail(string   originalImagePath,   string   thumbnailPath,   int   width,   int   height,   string   mode)   
                      
    {   
                              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格式保存缩略图   
                                      bitmap.Save(thumbnailPath,   System.Drawing.Imaging.ImageFormat.Jpeg);   
                              }
       
                              
    catch(System.Exception   e)   
                              
    {   
                                      
    throw   e;   
                              }
       
                              
    finally   
                              
    {   
                                      originalImage.Dispose();   
                                      bitmap.Dispose();                                                   
                                      g.Dispose();   
                              }
       
                      }
       
        
      关键方法Graphics.DrawImage见ms
    -help://MS.NETFrameworkSDKv1.1.CHS/cpref/html/frlrfsystemdrawinggraphicsclassdrawimagetopic11.htm   
  • 相关阅读:
    c#反射动态创建窗体
    ImageSwitcher 图片切换器
    viewSwitcher 切换视图
    ratingBar 星级评分条
    seekBar拖动滑块
    pythonUDP发送结构体,对齐到C++结构体
    pyqt5界面
    progressbar
    SVN服务器搭建和使用(一)
    关于MBR、GPT以及BIOS引导模式区分
  • 原文地址:https://www.cnblogs.com/nasdaqhe/p/542058.html
Copyright © 2011-2022 走看看