将 (8 * 7 px) 位图图像调整为 800 x 700

Resize (8 * 7 px) Bitmapimage to 800 x 700

我创建了大约 100 png 个大小都是 8*7 pixels 的文件,它们包含小脸。

我想在 WPF Image 中显示其中一张面孔,为此,我创建了一个位图图像(使用 Stretch.Fill 选项)并将 png 放入它的 urisource,然后我使用位图图像作为图像源。

正如你想象的那样,它看起来有点奇怪,我只想得到一个更大的图片,而不是改变任何像素(比如当你使用 windows 图像查看器并放大它时,有没有质量损失并且像素没有变化,这意味着您不会丢失图像的形状和颜色)

我确定有一种方法可以 "zoom" 到我的 8*7px 图片中,或者复制这些像素并再次绘制它们,但更大。

我真的很抱歉我的英语不好,我仍然希望你能理解我并能提供帮助。

先谢谢大家了,真的没什么好说的了

我想生成的图像看起来相当模糊。原因不在于质量 "loss" - 相反,它是在推断原始图像中根本没有的细节。对于照片和类似图像,使用一些平滑插值通常是更好的主意,这就是 WPF 所做的。

我不确定 WPF 中是否有更好的方法(可能),但您可以手动创建一个新的位图,而无需像这样的平滑插值:

var src = new Bitmap("D:\Untitled.png");
var dst = new Bitmap(800, 700);

using (var gr = Graphics.FromImage(dst))
{
  gr.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.NearestNeighbor;
  gr.DrawImage(src, new Rectangle(0, 0, 800, 700));
}

dst.Dump();

dst 变量将具有带有 "nearest neighbour" 插值的调整大小的位图 - "pixelated" 外观。

编辑:

WPF 原生方法是使用 RenderOptions.BitmapScalingMode="NearestNeighbor"。如果您动态创建图像,这当然对应于 RenderOptions.SetBitmapScalingMode(bmp, BitmapScalingMode.NearestNeighbor)