将 (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)
。
我创建了大约 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)
。