Как бороться с потерей цвета в GDI + Image Resize? - PullRequest
1 голос
/ 19 июня 2009

Я изменяю размеры изображений с помощью C # / GDI +, используя следующую маршрутизацию

        bmpOut = new Bitmap(lnNewWidth, lnNewHeight);
        Graphics g = Graphics.FromImage(bmpOut);
        g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBilinear;
        g.FillRectangle(Brushes.White, 0, 0, lnNewWidth, lnNewHeight);
        g.DrawImage(loBMP, 0, 0, lnNewWidth, lnNewHeight);

и кодирование с высочайшим качеством.

System.Drawing.Imaging.Encoder qualityEncoder = System.Drawing.Imaging.Encoder.Quality;
            EncoderParameter myEncoderParameter = new EncoderParameter(qualityEncoder, 100L);

Однако изображения, которые я получаю, имеют значительную потерю цвета (я использую только изображения JPG). Качество отличное, но цвет размыт. Ты хоть представляешь, что происходит?

Заранее большое спасибо.

1 Ответ

1 голос
/ 24 июня 2009

См. Как отключить субдискретизацию с помощью .NET / GDI +? *

Проблема в том, что jpeg-кодировщик GDI + не позволяет отключать подвыборку цветности, поэтому информация о цвете сохраняется с половинным разрешением. Единственный обходной путь может заключаться в использовании другого кодировщика, такого как ImageMagick, который был предложен в качестве ответа на вышеприведенное.

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