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   
  • 相关阅读:
    java中判断字符是否为英文字母、中文汉字或者数字
    JavaScript:多种定义数组的方式
    java位移运算符<<、>>、>>>
    安卓进阶:元注解Support Annotation Library使用详解
    正则:匹配引号内的字符串内容
    安卓:自定义字体
    安卓:Activity的自定义主题
    Pyhton学习——Day38
    测试用html
    Pyhton学习——Day37
  • 原文地址:https://www.cnblogs.com/nasdaqhe/p/542058.html
Copyright © 2011-2022 走看看