【问题标题】:Reduce Image resolution in WPF image control降低 WPF 图像控件中的图像分辨率
【发布时间】:2015-01-12 12:17:56
【问题描述】:

我在 WPF 中有一个图像控件。我需要减小图像尺寸控件的宽度和高度。但是当我这样做时,图像看起来不太好。数据丢失更多。

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

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

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

【问题讨论】:

    标签: wpf


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 我的 GIF 图片非常大。如何使用 WPF 动画 GIF 设置 DecodePixelWidthDecodePixelHeight
    【解决方案2】:

    您可以像这样使用 DecodePixelWidth 属性:

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

    【讨论】:

      【解决方案3】:

      1) 尝试使用 ViewBox:将您的图像放入 ViewBox。
      2) 有时渲染引擎会因为像素对齐问题而降低质量,尤其是在低分辨率设备上。查看 SnapsToDevicePixels 属性,并尝试在 ViewBox 的包含控件 AND / OR 中将其设置为 true。
      3) 显然,您可以编写一个执行分辨率更改的控件,但这是相当多的工作。

      【讨论】:

        【解决方案4】:

        试试这个。

        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;
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2023-04-10
          • 1970-01-01
          • 2016-04-23
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-11-20
          相关资源
          最近更新 更多