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   
  • 相关阅读:
    前端-微信公众号开发(jssdk)
    wampserver 配置本地环境局域网内pc移动访问
    客户端缓存之localStorage and sessionStorage
    webpack+vue搭建基础
    高德地图javascriptAPI基本使用心得(下)
    高德地图javascriptAPI基本使用心得(上)
    表单单选多选项清除默认样式小技巧
    (原创)C#零基础学习笔记003-流程控制语句
    (原创)C#零基础学习笔记002-表达式与运算符
    (原创)C#零基础学习笔记000-学习结构
  • 原文地址:https://www.cnblogs.com/nasdaqhe/p/542058.html
Copyright © 2011-2022 走看看