asp.net 生成高质量缩略图C#代码收藏!

using  System;
using  System.Data;
using  System.Configuration;
using  System.Web;
using  System.Web.Security;
using  System.Web.UI;
using  System.Web.UI.WebControls;
using  System.Web.UI.WebControls.WebParts;
using  System.Web.UI.HtmlControls;

/* -----------------------------------------------------------------------------
* 公司:
* 作者: 肖品
* 文件描述: 
* 创建时间: 2011-8-1 20:20:11
* 版本: v1.0
-----------------------------------------------------------------------------
*/
public   class  ImageUtil
{
    
///  
    
///  生成缩略图
    
///  

    
///   源图路径(物理路径)
    
///   缩略图路径(物理路径)
    
///   缩略图宽度
    
///   缩略图高度
    
///   生成缩略图的方式     
     public   static   void  MakeThumbnail( string  originalImagePath,  string  thumbnailPath,  int  width,  int  height,  string  mode)
    {
        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);

        
// 新建一个画板
        System.Drawing.Graphics g  =  System.Drawing.Graphics.FromImage(bitmap);

        
// 设置高质量插值法
        g.InterpolationMode  =  System.Drawing.Drawing2D.InterpolationMode.High;

        
// 设置高质量,低速度呈现平滑程度
        g.SmoothingMode  =  System.Drawing.Drawing2D.SmoothingMode.HighQuality;

        
// 清空画布并以透明背景色填充
        g.Clear(System.Drawing.Color.Transparent);

        
// 在指定位置并且按指定大小绘制原图片的指定部分
        g.DrawImage(originalImage,  new  System.Drawing.Rectangle( 0 0 , towidth, toheight),
            
new  System.Drawing.Rectangle(x, y, ow, oh),
            System.Drawing.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();
        }
    }

}

你可能感兴趣的:(asp.net 生成高质量缩略图C#代码收藏!)