1

次のコードを使用して、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
4

1 に答える 1

1

私は似たようなものを見てきました。私はそれを調査する時間がありませんでしたが、GDI +画像リサイザーが「上端から離れた」ピクセル値を誤って使用しているためだと感じています。これはすべてゼロになり、黒になります。

適切な画像のサイズ変更は、画像の端に達したことを認識し、適切に処理する必要があります。

于 2010-04-15T01:54:34.797 に答える