Я использую следующий код для изменения размера растрового изображения с использованием GDI + в C. Я получаю значения серого для верхнего края даже для изображений, где эта область должна быть белой. Проблема исчезает, когда интерполяция ближайшего соседа. Тем не менее, я попытался бикубической интерполяции с ImageMagick, и это выглядит нормально. Какие проблемы с ограничениями я должен знать? Мой метод масштабирования не так? Спасибо!
(входы:
destSize: пункт назначения Gdiplus :: Размер
m_pBitmap: исходное растровое изображение)
Rect destRect(Point(0,0), destSize);
Bitmap *pBitmap24BPP = new Bitmap(destSize.Width, destSize.Height, PixelFormat24bppRGB);
pBitmap24BPP->SetResolution(m_pBitmap->GetHorizontalResolution(), m_pBitmap->GetVerticalResolution());
Graphics *pGraphics = Graphics::FromImage(pBitmap24BPP);
pGraphics->SetInterpolationMode(InterpolationModeHighQualityBilinear);
pGraphics->DrawImage(m_pBitmap, destRect, 0, 0, m_pBitmap->GetWidth(), m_pBitmap->GetHeight() , UnitPixel, NULL);
//cleanup