[英]Resize (8 * 7 px) Bitmapimage to 800 x 700
我创建了大约100 png
文件,这些文件的大小均为8*7 pixels
,它们包含微小的面孔。
我想在WPF Image
显示其中一张脸,为此,我创建了一个Bitmapimage(使用Stretch.Fill
选项),并将png放入其urisource中,然后将bitmapimage用作图像源。
可以想象,看起来有点奇怪,我要做的就是获取更大的图片,而不更改任何像素(例如,当您使用Windows图像查看器并放大它时,没有质量损失,像素也没有变化,这意味着您不会松开图像的形状和颜色)
我敢肯定有一种方法可以"zoom"
我的8*7px
图片,或者复制这些像素并再次绘制它们,但是更大。
非常抱歉我的英语不好,我仍然希望您能理解我并能提供帮助。
预先非常感谢您,实际上没有什么可说的了。
我想象得到的图像看起来很模糊。 原因不是质量的“损失”-而是推断出原始图像中根本没有的细节。 对于照片和类似图像,使用一些平滑插值通常是一个更好的主意,因此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
变量的大小调整后的位图将带有“最近邻居”插值-“像素化”外观。
编辑:
WPF本机方式是使用RenderOptions.BitmapScalingMode="NearestNeighbor"
。 如果要动态创建图像,则它当然对应于RenderOptions.SetBitmapScalingMode(bmp, BitmapScalingMode.NearestNeighbor)
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.