Как подготовить качественное миниатюру изображения в c # - PullRequest
0 голосов
/ 11 января 2011

Я занимаюсь разработкой приложения asp.net MVC на языке c #, где я дал возможность загрузить изображение. Я хочу предоставить обрезать изображение и показать его эскиз. Я немного добился этого, используя пространство имен System.Drawing.Bitmap и его классы, но это влияет на качество миниатюры при сжатии. Что мне нужно сделать . Я прошел по этой ссылке

но не мог наверстать упущенное. пожалуйста помоги. Отредактировано: Я уже пытался применить вышеуказанную ссылку: и мой код был:

public static void ResizeAndSaveHighQualityImage (System.Drawing.Image image, int ширина, int высота, строка pathToSave, int качество) {

    // 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 Ответ

1 голос
/ 11 января 2011

Возможно, проблема в том, что вы не установили, какой формат сжатия вы хотите.

Вы пробовали с JPG или PNG?

Проверьте Bitmap.Save перегрузки, и вы найдете некоторые необходимые параметры кодера, которые позволят вам указать тип пантомимы, уровень качества и т. Д.

Надеюсь, это было полезно:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...