c# 生成缩略图

#region 生成缩略图
/// <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)
{
    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();
    }
}
#endregion

调用代码:

Thumbnail.MakeThumbnail(fullPath, minFullPath, PicWidth, PicHeight, "HW");

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值