【发布时间】: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 只是一个灰色屏幕。当我通过调试器检查位图属性时,一切似乎都很好。我正在从远程服务器接收图像字符串。我已经比较了来自客户端/服务器的两个字符串,它们完全相同。
-
我找到了问题所在。感谢您的帮助!
-
应该关闭吗?一点问题都没有,最后……
-
是的,问题应该结束了。