【问题标题】:WPF in-memory image not rendering after assigned to Image.Source分配给 Image.Source 后 WPF 内存中图像未呈现
【发布时间】:2015-05-19 05:54:20
【问题描述】:

我一直在寻找几个小时来找出问题所在,但找不到。我正在使用此函数将 base64String 转换为 BitmapImage

public static BitmapImage Base64StringToBitmapImage(string base64String) {
        byte[] byteBuffer = Convert.FromBase64String(base64String);
        MemoryStream memoryStream = new MemoryStream(byteBuffer);
        memoryStream.Position = 0;

        BitmapImage bitmapImage = new BitmapImage();

        using (memoryStream) {
            bitmapImage.BeginInit();
            bitmapImage.CacheOption = BitmapCacheOption.OnLoad;
            bitmapImage.StreamSource = memoryStream;
            bitmapImage.EndInit();

            bitmapImage.Freeze();
        }
        memoryStream.Close();
        memoryStream = null;
        byteBuffer = null;

        return bitmapImage;
    }

然后将其分配给绑定到视图的 ViewModel 的属性:

ProcessImage = Base64StringToBitmapImage(_imageString);

MainWindow.xaml

<Image x:Name="PART_IMAGE" Width="auto" Height="auto" Source="{Binding ProcessImage}" />

我通过将图像背景设置为红色进行了一些测试,我注意到图像的大小已按应有的方式调整(1920x1080,因为它是我计算机的打印屏幕),但我看不到渲染的图像.. .我已经做了很多测试并在谷歌上搜索并没有找到任何解决方案......任何人都认为这段代码有问题或知道是什么导致了问题?我真的没办法了:(

【问题讨论】:

  • 你确定BitmapImage 是正确的吗?您是否尝试将其保存到文件中以进行测试?
  • 刚刚试过了。似乎没有图像,因为创建的 jpeg 只是一个灰色屏幕。当我通过调试器检查位图属性时,一切似乎都很好。我正在从远程服务器接收图像字符串。我已经比较了来自客户端/服务器的两个字符串,它们完全相同。
  • 我找到了问题所在。感谢您的帮助!
  • 应该关闭吗?一点问题都没有,最后……
  • 是的,问题应该结束了。

标签: c# wpf image render


【解决方案1】:

我发现了问题。在服务器端保存图像后,我发现打印屏幕图像不正确。我做了一些修改,一切正常。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-09-23
    • 1970-01-01
    • 2019-12-07
    • 2017-06-18
    • 1970-01-01
    • 2020-11-10
    相关资源
    最近更新 更多