Справочник по C#

    Исходники по языку программирования CSharp

    Изменение размера картинок на c#. Проблемы с качеством итогового изображения.: Справочник по C#

    /
    /
    /
    104 Views


          Сегодня расскажу о схеме работы с картинками, которая используется сейчас у меня на работе.

          Картинки хранятся в базе в максимальном разрешении. Для вывода на сайте картинка в зависимости от страницы или блока сжимается до нужного в пикселях размера. Размер пикселей передается в параметрах запроса. На итоговое изображение накладывается watermark, затем картинка кешируется и при повторном обращении уже берется из кеша. В момент отправки клиенту картинке присваивается уникальный Etag и параметры кеширования в браузере. То есть при повторном обращении браузер уже не запрашивает картинку, а берет из дискового кеша.
           Недавно мы столкнулись с такой проблемой: при изменении gif картинки, качество ее заметно ухудшалось и те решения, которые успешно работали c jpeg, с gif картинками не давали результатов.

          Решение оказалось достаточно простым. После изменения размера для gif картинок нужно устанавливать:
    ImageFormat format = ImageFormat.Png;
    context.Response.ContentType = “image/png”;

          В этом случае сглаживание картинки будет приемлемым для использования на сайте. В остальных случаях ImageFormat должен соответствовать исходному изображению.

          P.S. Метод, успешно работающий для изменения размера, а также сглаживания jpeg картинок:

    Bitmap bp = new Bitmap(newSize.Width, newSize.Height);
    using (Graphics g = Graphics.FromImage(bp))
    {
    //Сглаживание и интерполяция
    g.SmoothingMode = SmoothingMode.HighQuality;
    g.InterpolationMode = InterpolationMode.HighQualityBicubic;
    g.PixelOffsetMode = PixelOffsetMode.HighQuality;
    //Изменение размера
    Rectangle rect = new Rectangle(0, 0, thumbSize.Width, thumbSize.Height);
    g.DrawImage(image, rect, 0, 0, image.Width, image.Height, GraphicsUnit.Pixel);
    }
    

    Источник rudevelop.spb.ru

    Изменение размера картинок на c#. Проблемы с качеством итогового изображения.: Справочник по C#

    0.00 (0%) 0 votes

    moyadcode13
    • Facebook
    • Twitter
    • Google+
    • Linkedin
    • Pinterest