Изображение изменяет размеры с GDI в.NET, дает низкую насыщенность

Люди ленивы и только принимают изменение при принуждении к.

11
задан jishi 16 October 2009 в 09:56
поделиться

4 ответа

Я сам нашел ответ. Это связано с цветовыми профилями, которые по умолчанию не применяются в GDI +. Многие утверждают, что вы не можете автоматически применять цветовые профили с помощью GDI, но, видимо, единственное изменение, которое мне нужно было сделать, это следующее:

using (var original = System.Drawing.Image.FromStream (new MemoryStream (image.RawData) ))

-

с использованием (var original = new Bitmap (new MemoryStream (image.RawData), true))

Очевидно, Bitmap был производным классом Image, а конструктор Bitmap может принимать как stream, а также логическое значение для useIcm. Это помогло мне.

21
ответ дан 3 December 2019 в 05:58
поделиться

У меня есть код изменения масштаба изображения, который я использую, и я не вижу эффекта, который вы упомянули.

основное различие, которое я вижу, заключается в том, что я использую Format24bppRgb, а не Format24bpp A Rgb

Имейте в виду, что JPG все равно не имеет альфа-канала (afaik)

0
ответ дан 3 December 2019 в 05:58
поделиться

Был там, сделал это. Как бы глупо это ни звучало, это имеет значение:

var quality = 95;
var myEncoderParameter = new EncoderParameter( Encoder.Quality, (long)quality );

,

long quality = 95;
var myEncoderParameter = new EncoderParameter( Encoder.Quality, quality );

или

var quality = 95L;
var myEncoderParameter = new EncoderParameter( Encoder.Quality, quality );

Просто выберите один.

-1
ответ дан 3 December 2019 в 05:58
поделиться

Если взглянуть на это под другим углом, я настоятельно рекомендую ImageResizer , если вы хотите избавиться от этой боли самостоятельно. Он даже заботится о кэшировании диска.

0
ответ дан 3 December 2019 в 05:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: