我正在尝试按给定的64位字符串加载图像。
我有以下XAML图片:
<Image x:Name="CustomImage"></Image>
我在类页面上有这个方法,它在构造函数中的InitializeComponent()
之后调用:
public void LoadImage(string imageString)
{
CustomImage.Source = ImageSource.FromStream(() =>
{
return imageString.StringToStream();
});
}
扩展方法名为:
public static Stream StringToStream(this string image)
{
var imageBytes = Convert.FromBase64String(image);
using (var ms = new MemoryStream())
{
ms.Write(imageBytes, 0, imageBytes.Length);
return ms;
}
}
该方法不会抛出异常,但在执行代码后会抛出未处理的异常。
我做错了什么?我无法捕获异常,因为它被抛到我的代码之外。
答案 0 :(得分:1)
尝试以下代码:
CustomImage.Source = ImageSource.FromStream(
() => new MemoryStream(Convert.FromBase64String(imageString)));
答案 1 :(得分:1)
错误可能是光标的位置在流的末尾。
您可以更正代码更改为:
LoadImage方法:
public void LoadImage(string imageString)
{
CustomImage.Source = ImageSource.FromStream(() => imageString.StringToStream());
}
扩展方法:
public static Stream StringToStream(this string image)
{
var imageBytes = Convert.FromBase64String(image);
return new MemoryStream(imageBytes);
}
答案 2 :(得分:0)
尝试以下方法:
CustomImage.Source = ImageSource.FromStream(() => new MemoryStream(System.Convert.FromBase64String(imageString)));