7

我有一张想要放大的灰度图像,以便更好地查看各个像素。我尝试将平滑模式设置为无和一些不同的插值模式(如此处其他问题所建议的那样),但在我看来,图像在显示在屏幕上之前仍然在进行某种混合。

基本上如果我有一个图像

(White, White,
 White, Black)

我想当我放大它说 6x6 时,它看起来像

 (White, White, White, White, White, White
  White, White, White, White, White, White
  White, White, White, White, White, White
  White, White, White, Black, Black, Black
  White, White, White, Black, Black, Black
  White, White, White, Black, Black, Black)

黑白区域之间没有褪色,应该看起来像一个正方形。图像应该看起来更“像素化”而不是“模糊”

4

3 回答 3

10

尝试设置插值模式:

g.InterpolationMode = InterpolationMode.NearestNeighbor;
于 2012-07-12T16:41:47.693 回答
8

我也想做类似的事情。当我发现这个问题时,两个答案都不是我想要的,但它们结合在一起。这就是让我到达我想去的地方的原因,并且从你的问题中我可以看出你想要什么。

private Bitmap ResizeBitmap(Bitmap sourceBMP, int width, int height)
{
    Bitmap result = new Bitmap(width, height);
    using (Graphics g = Graphics.FromImage(result))
    {
        g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.NearestNeighbor;
        g.DrawImage(sourceBMP, 0, 0, width, height);
    }
    return result;
}
于 2012-09-21T00:27:59.180 回答
1

可能这会有所帮助!

http://www.codeproject.com/Articles/191424/Resizing-an-Image-On-The-Fly-using-NET

否则你能否实现这个方法,看看它是否适合你?

private static Bitmap ResizeBitmap(Bitmap sourceBMP, int width, int height )
{
            Bitmap result = new Bitmap(width, height);
            using (Graphics g = Graphics.FromImage(result))
                g.DrawImage(sourceBMP, 0, 0, width, height);
            return result;
 }
于 2012-07-12T16:38:58.280 回答