我正在使用下面的代码来使用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