2010-01-08 56 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 +圖像調整器錯誤地將像素值「偏離頂部邊緣」,這將全部爲零 - 使它變成黑色。

正確的圖像調整大小應該認識到您已到達圖像的邊緣並進行適當的處​​理。