2010-01-08 61 views
1

我使用下面的代码来调整使用C中的GDI +的位图。我得到了顶部边缘的灰度值,即使是该区域应该是白色的图像。当插值是最近邻时,问题消失。但是,我试图用ImageMagick进行双三次插值,看起来很好。任何限制问题我应该知道?不知怎的,我的缩放方法是错误的吗?谢谢!模糊顶端与GDIPlus调整大小

(输入: 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 

回答

1

我已经看到类似的事情。我没有时间研究它,但是我有一种感觉,那就是因为GDI +图像调整器错误地将像素值“偏离顶部边缘”,这将全部为零 - 使它变成黑色。

正确的图像调整大小应该认识到您已到达图像的边缘并进行适当的处​​理。