苏飞论坛

标题: C#生成高清缩略图的方法 [打印本页]

作者: 站长苏飞    时间: 2013-12-31 09:36
标题: C#生成高清缩略图的方法
[C#] 纯文本查看 复制代码
 /// <summary>
    /// 为图片生成缩略图  
    /// </summary>
    /// <param name="phyPath">原图片的路径</param>
    /// <param name="width">缩略图宽</param>
    /// <param name="height">缩略图高</param>
    /// <returns></returns>
    public System.Drawing.Image GetThumbnail(System.Drawing.Image image, int width, int height)
    {
        Bitmap bmp = new Bitmap(width, height);
        //从Bitmap创建一个System.Drawing.Graphics
        System.Drawing.Graphics gr = System.Drawing.Graphics.FromImage(bmp);
        //设置
        gr.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
        //下面这个也设成高质量
        gr.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality;
        //下面这个设成High
        gr.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
        //把原始图像绘制成上面所设置宽高的缩小图
        System.Drawing.Rectangle rectDestination = new System.Drawing.Rectangle(0, 0, width, height);

        gr.DrawImage(image, rectDestination, 0, 0, image.Width, image.Height, GraphicsUnit.Pixel);
        return bmp;
    }


调用方法
[C#] 纯文本查看 复制代码
  HttpPostedFile file = photoFile.PostedFile;
        if (!file.ContentType.Contains("image"))
        {
return "照片格式不合法";
        }
        string ext = Path.GetExtension(file.FileName).ToLower();
        if (ext != ".jpg" && ext != ".gif" && ext != ".png" && ext != ".jpeg")
        {
return "请您上传jpg、gif、png图片";
        }
        if (file.ContentLength > 5 * 1024 * 1024)
        {
return "请您上传512字节内的图片";
        }
        string newName = Guid.NewGuid().ToString();
        string tempPath = "upload/";
        string img = tempPath + newName + ext;
        string filePath = Server.MapPath(img);
        if (!Directory.Exists(tempPath))
        {
            Directory.CreateDirectory(tempPath);
        }
        using (System.Drawing.Image originalImage = System.Drawing.Image.FromStream(file.InputStream))
        {
            GetThumbnail(originalImage, 504, 374).Save(filePath);
        }


作者: 站长苏飞    时间: 2013-12-31 09:38
这个方法主要为了生成高清缩略图片,如果是普通的不建议大家使用,因为生成的图片比较大一些。当然肯定会原图要小的多
作者: Monn    时间: 2013-12-31 14:54
受教了,学习中……
作者: gangn    时间: 2014-1-1 14:11
强烈支持楼主ing……
作者: arronlee    时间: 2014-5-7 11:13
如果换做用普通的Thumbnail Creator生成的缩略图与站长分享的这种generate thumbnail的方法,生成出来的缩略图效果一致吗?相比较而言,哪种更为方便快捷一点呢?


作者: Cheungxin    时间: 2015-1-6 15:27
本帖最后由 Cheungxin 于 2015-1-6 15:28 编辑

目前我需要就是兼容.net framework的生成高清缩略图的程序,这个“C#生成高清缩略图的方法”帮了我许多。

作者: howzew    时间: 2015-1-12 23:26
来学习一下
作者: Cheungnotes    时间: 2015-1-20 15:28
看过帖子回复一下是个好习惯
作者: nbcxyy    时间: 2016-1-14 10:37
万能的苏飞论坛,太有用了,谢谢
作者: y574664379    时间: 2016-6-2 14:03
受教了,正在学习中




欢迎光临 苏飞论坛 (http://www.sufeinet.com/) Powered by Discuz! X3.4