Base64String到ImageSource会抛出一个未处理的异常

时间:2017-10-04 11:56:51

标签: c# .net image xamarin xamarin.forms

我正在尝试按给定的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;
     }
}

该方法不会抛出异常,但在执行代码后会抛出未处理的异常。

我做错了什么?我无法捕获异常,因为它被抛到我的代码之外。

3 个答案:

答案 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)));