深圳网站建设、深圳建网站、网站建设公司定制属于您的高端个性化网站!

搜索深圳网站建设相关案例及相关信息 服务热线:13530005572/15112579390
首页 > 网站建设知识 > 利来w66(中国)有限公司生成图片小图的代码

利来w66(中国)有限公司生成图片小图的代码

  • 所属分类:网站建设知识
  • 作者: 利来w66(中国)有限公司
  • 更新时间: 2015-2-7 10:25:42
  • 返回列表
       我们在后台上传图片的时候经常会生成几张小图,因为我们网站上面都会有几个小图,我们不可以让用户一张图片要多次处理然后上传一张图片吧,这个不合理,所以我们采用生成小图的方法来完成这一个效果,下面就是我们实现这个方法的代码。
/// <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(HttpContext.Current.Server.MapPath(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
    {
        originalImage.Dispose();
        string toFileFullPath = HttpContext.Current.Server.MapPath(thumbnailPath.Substring(0, thumbnailPath.LastIndexOf("/")));
        //检查是否有该路径没有就创建
        if (!Directory.Exists(toFileFullPath))
        {
            Directory.CreateDirectory(toFileFullPath);
        }
        //保存缩略图
        bitmap.Save(HttpContext.Current.Server.MapPath(thumbnailPath));
    }
    catch (System.Exception e)
    {
        //异常
        throw e;
    }
    finally
    {
        //关闭信息
        bitmap.Dispose();
        g.Dispose();
    }
}
如有不懂,联系利来w66(中国)有限公司(//labelmachines.net)

相关推荐

您值得信任的网站建设专家!

为其提供系统的基于互联网的品牌行销策略 、 创意执行 、 追踪运营服务 。