代码之家  ›  专栏  ›  技术社区  ›  moogs

带gdiplus调整大小的模糊上边缘

  •  1
  • moogs  · 技术社区  · 15 年前

    我正在使用下面的代码来使用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
    
    1 回复  |  直到 13 年前
        1
  •  1
  •   Ian Boyd    14 年前

    我也看到过类似的事情。我还没来得及研究它,但我有一种感觉,这是因为gdi+图像大小调整器错误地使用像素值“上边缘”,这将是所有零使其黑色。

    适当的图像大小调整应该能够识别您已经到达了图像的边缘,并对其进行适当的处理。