如何在c#中准备高质量的缩略图

时间:2011-01-11 08:50:08

标签: asp.net-mvc-2 thumbnails

我正在用c#语言开发asp.net MVC应用程序,在那里我已经提供了上传图像的工具。我想提供裁剪图像并显示其缩略图。我通过使用System.Drawing.Bitmap命名空间及其类来实现这一点,但它会在压缩时影响缩略图的质量。我该怎么办我经历了这个link

但无法赶上。请帮忙。 的编辑: 我之前尝试过申请上面的链接:我的代码是:

public static void ResizeAndSaveHighQualityImage(System.Drawing.Image image,int width,int height,string pathToSave,int quality)     {

    // the resized result bitmap

    using (Bitmap result = new Bitmap(width, height))
    {

        // get the graphics and draw the passed image to the result bitmap

        using (Graphics grphs = Graphics.FromImage(result))
        {

            grphs.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality;

            grphs.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;

            grphs.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;

            grphs.DrawImage(image, 0, 0, result.Width, result.Height);

        }
        // check the quality passed in

        if ((quality < 0) || (quality > 100))
        {

            string error = string.Format("quality must be 0, 100", quality);

            throw new ArgumentOutOfRangeException(error);

        }



        EncoderParameter qualityParam = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, quality);

        string lookupKey = "image/jpeg";

        var jpegCodec = ImageCodecInfo.GetImageEncoders().Where(i => i.MimeType.Equals(lookupKey)).FirstOrDefault();



        //create a collection of EncoderParameters and set the quality parameter

        var encoderParams = new EncoderParameters(1);

        encoderParams.Param[0] = qualityParam;

        //save the image using the codec and the encoder parameter

        result.Save(pathToSave, jpegCodec, encoderParams);

    }

}

这也会产生低质量的图像。我从上面给出的链接也得不到多少。为什么我需要在那里写处理程序?那是必要的吗?

1 个答案:

答案 0 :(得分:1)

问题可能是你没有设置你想要的压缩格式。

你试过JPG或PNG吗?

检查Bitmap.Save重载,你会发现一些需要编码器参数,这将让你提供一个mime类型,质量等级。

我希望这很有用:)