Я пытаюсь уменьшить растровое изображение с помощью GDI +, выполнив следующие действия:
Bitmap newImage = new Bitmap(NewWidth, NewHeight, Im.PixelFormat);
Graphics g = Graphics.FromImage(newImage);
g.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality;
g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
g.ScaleTransform(0.1, 0.1); // 10%
g.DrawImage(Im, 0, 0, Im.Width, Im.Height);
Im - исходное изображение, NewWidth и NewHeight - 10% или исходное изображение. Я проверил это на изображении 1000x1000 (уменьшив его до 100x100)
Масштабирование выполняется правильно с высоким качеством, как и было обещано, но по какой-то причине слева, справа и сверху есть серая рамка (внизу нет).
Полагаю, это связано с тем, что все границы изображения являются белыми, а цвет "снаружи" растрового изображения по умолчанию черный, поэтому часть черного по умолчанию смешивается с масштабной интерполяцией.
Я искал способ установить цвет фона по умолчанию на белый (белый подойдет хорошо), но не смог его найти нигде ..
Моя альтернатива - заполнить границу белой рамкой, уменьшить масштаб изображения и обрезать его, но мне было интересно, есть ли более простой и менее ресурсоемкий способ?
Есть идеи?