ASP.NET生成高质量缩略图通用函数(C#代码),支持多种生成方式_[Asp.Net教程]                                           					
在网站开发时,生成缩略图是一个非常常见和实用的功能.以前在asp里只能借助com组件实现,现在在.net里可以利用框架的强大的类库轻松实现.下面帖出完整的代码(带详细注释),参考了网上的一些文章及.net sdk相关内容.QQROOM网络家园的图片上传用到了所有的4种生成方式. 
复制C#代码保存代码/// 
/// 生成缩略图
/// 
/// 源图路径(物理路径)
/// 缩略图路径(物理路径)
/// 缩略图宽度
/// 缩略图高度
/// 生成缩略图的方式    
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();
    }
}
来源:网络