Я борюсь с проблемой, из-за которой мои изображения с измененным размером теряют насыщенность цвета, когда я манипулирую ими с помощью GDI.
Я загружаю JPG как оригинал, изменяю его размер, и полученное изображение имеет намного меньшую насыщенность (интенсивность цвета), чем исходное изображение. Что я могу сделать, чтобы это исправить? это мой код:
using ( var original = System.Drawing.Image.FromStream( new MemoryStream( image.RawData ) ) ) { using ( var dst = new Bitmap( width, height, PixelFormat.Format32bppArgb ) ) { using ( var g = Graphics.FromImage( dst ) ) { g.SmoothingMode = SmoothingMode.HighQuality; g.PixelOffsetMode = PixelOffsetMode.HighQuality; g.CompositingQuality = CompositingQuality.HighQuality; g.DrawImage( original, 0, 0, dst.Width, dst.Height ); g.InterpolationMode = InterpolationMode.HighQualityBicubic; g.DrawImage( original, 0, 0, dst.Width, dst.Height ); var jpgEncoder = GetEncoder( ImageFormat.Jpeg ); var myEncoderParameters = new EncoderParameters( 1 ); var quality = 95; var myEncoderParameter = new EncoderParameter( Encoder.Quality, quality ); myEncoderParameters.Param[0] = myEncoderParameter; dst.Save( buffer, jpgEncoder, myEncoderParameters ); } } }
Я пробовал использовать разные форматы пикселей, удаляя все фильтры и т. Д., Но всегда получаю один и тот же результат. Это какая-то известная проблема с GDI, или я что-то пропустил?
Дополнение: при открытии изображения в Paint.NET я получаю ту же проблему с низкой насыщенностью, даже без изменения масштаба, так что, я думаю, GDI + загружает изображения (jpgs) именно так?
Это изображение было сохранено из фотошопа с цветовым профилем sRGB, но в afaik JPG нет информации о встроенных цветовых профилях. И даже если бы это было так, я считаю, что Firefox не подчиняется им (это то, что я тестировал)
Дальнейшее тестирование показывает, что в IE8 он выглядит иначе, чем в firefox. Кажется, что файлы JPG поддерживают цветовые профили, но большинство приложений им не подчиняются. Однако, похоже, что FF3.5 это делает. И это был Adobe RGB, а не sRGB на изображении.