/// <summary>
    /// 生成缩略图
    /// </summary>
    /// <param name="srcPath">源图路径(物理路径)</param>
    /// <param name="newPath">缩略图路径(物理路径)</param>
    /// <param name="maxWH">最大的宽/高度</param>
    public static void MakeThumb(string srcPath, string newPath, int maxWH)
    {
        try
        {
            using (Image img = Image.FromFile(srcPath))
            {
                int nw = img.Width, nh = img.Height;
                int sw = img.Width, sh = img.Height;                if (sw > sh && sw > maxWH)
                {
                    nw = maxWH;
                    nh = Convert.ToInt32(sh / (sw / nw));
                }
                else if (sh > sw && sh > maxWH)
                {
                    nh = maxWH;
                    nw = Convert.ToInt32(sw / (sh / nh));
                }                using (Image bitmap = new System.Drawing.Bitmap(nw, nh))
                {
                    using (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(img, new Rectangle(0, 0, nw, nh), new Rectangle(0, 0, sw, sh), GraphicsUnit.Pixel);//在指定位置并且按指定大小绘制原图片的指定部分
                        bitmap.Save(newPath, System.Drawing.Imaging.ImageFormat.Jpeg);
                    }
                }
            }
        }
        catch (System.Exception e)
        {
            throw e;
        }
    }

解决方案 »

  1.   

    [quote=引用 2 楼 y263444966 的回复:这段代码能生成固定大小的缩略图吗?不能吧 我要固定大小的缩略图
    /// <summary>
        /// 生成缩略图
        /// </summary>
        /// <param name="srcPath">源图路径(物理路径)</param>
        /// <param name="newPath">缩略图路径(物理路径)</param>
        /// <param name="maxWH">最大的宽/高度</param>
        public static void MakeThumb(string srcPath, string newPath, int maxWH)
        {
            try
            {
                using (Image img = Image.FromFile(srcPath))
                {
                    int nw = img.Width, nh = img.Height;
                    int sw = img.Width, sh = img.Height;                if (sw > sh && sw > maxWH)
                    {
                        nw = maxWH;
                        nh = Convert.ToInt32(sh / (sw / nw));
                    }
                    else if (sh > sw && sh > maxWH)
                    {
                        nh = maxWH;
                        nw = Convert.ToInt32(sw / (sh / nh));
                    }                using (Image bitmap = new System.Drawing.Bitmap(nw, nh))
                    {
                        using (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(img, new Rectangle(0, 0, nw, nh), new Rectangle(0, 0, sw, sh), GraphicsUnit.Pixel);//在指定位置并且按指定大小绘制原图片的指定部分
                            bitmap.Save(newPath, System.Drawing.Imaging.ImageFormat.Jpeg);
                        }
                    }
                }
            }
            catch (System.Exception e)
            {
                throw e;
            }
        }
      

  2.   

    Image  本身有个函数就是获取缩略图的。。