在WPF图像控制中降低图像分辨率

在WPF图像控制中降低图像分辨率,wpf,Wpf,我有一个WPF中的图像控件。我需要减少图像大小控制宽度和高度。但当我这样做时,图像看起来并不好。数据丢失更严重 所以我想降低图像分辨率,而不是仅仅改变图像控制的宽度和高度 有谁能帮我在WPF图像控件中更改绑定图像的图像分辨率吗 [我的意思是图像已绑定到图像控件,现在我只需更改分辨率即可]1)尝试使用ViewBox:将图像放在ViewBox中。 2) 有时渲染引擎会因为像素对齐问题而降低质量,尤其是在低分辨率设备上。查看SnapsToDevicePixels属性,并尝试在包含控件和/或ViewBo

我有一个WPF中的图像控件。我需要减少图像大小控制宽度和高度。但当我这样做时,图像看起来并不好。数据丢失更严重

所以我想降低图像分辨率,而不是仅仅改变图像控制的宽度和高度

有谁能帮我在WPF图像控件中更改绑定图像的图像分辨率吗

[我的意思是图像已绑定到图像控件,现在我只需更改分辨率即可]

1)尝试使用ViewBox:将图像放在ViewBox中。
2) 有时渲染引擎会因为像素对齐问题而降低质量,尤其是在低分辨率设备上。查看SnapsToDevicePixels属性,并尝试在包含控件和/或ViewBox中将其设置为true。

3) 显然,您可以编写执行分辨率更改的控件,但这是一项相当艰巨的工作。

您可以使用DecodePixelWidth属性,如下所示:

<Image Stretch="Fill">
    <Image.Source>
        <BitmapImage CacheOption="OnLoad" DecodePixelWidth="2500" UriSource="Images/image.jpg"/>
    </Image.Source>
</Image>

在.NET 4中,他们将默认图像缩放改为低质量缩放…因此您可以使用
位图缩放模式
切换回高质量模式:

<Image RenderOptions.BitmapScalingMode="HighQuality"
       Source="myimage.png"
       Width="100"
       Height="100" />

如果源映像是一个巨大的映像,您还可以将上述选项与其他选项(如解码选项)结合使用(这只会减少应用程序中的内存使用)

防止“模糊”的其他选项是将
UseLayoutRounding=“True”
放在根元素(即窗口)…建议在.NET 4中使用此选项,而不是
SnapToDevicePixels

    • 试试这个

      Image img = new Image();
      
      var buffer = System.IO.File.ReadAllBytes(_filePath);
      MemoryStream ms = new MemoryStream(buffer);
      
      BitmapImage src = new BitmapImage();
      src.BeginInit();
      src.StreamSource = ms;
      src.DecodePixelHeight = 200;//Your wanted image height
      src.DecodePixelWidth = 300; //Your wanted image width 
      src.EndInit();
      
      img.Source = src;
      

      我的GIF图像非常大。如何使用WPF动画GIF设置
      DecodePixelWidth
      DecodePixelHeight