我正在使用以下代码在 C 中使用 GDI+ 调整位图的大小。即使对于该区域应该是白色的图像,我也会获得顶部边缘的灰度值。当插值是最近邻时,问题就消失了。但是,我尝试使用 ImageMagick 进行双三次插值,看起来还不错。我应该知道的任何限制问题?我的缩放方法在某种程度上是错误的吗?谢谢!
(输入:destSize:目标 Gdiplus::Size 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