将Base64字符串转换为BitmapImage C# Windows Phone

3
我从服务器收到了一个 image/jpeg;base64 字符串。我该如何将这个字符串转换成 BitmapImage,并像 Image.Source 一样设置它?
string imgStr = "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAAQABAAD .... ";
BitmapImage bmp = Base64StringToBitmap(imgStr);
myImage.Source = bmp;

感谢您的提前支持!

1
你可以使用 byte[] byteBuffer = Convert.FromBase64String(base64String); 获取字节,但不知道如何设置到你的图像控件中。 - Vitor Canova
Vitor Canova,谢谢!我可以使用byteBuffer和memoryStream,并将其设置为BitmapImage的源! - el-niko
也许将您的解决方案发布为答案。 - Vitor Canova
1个回答

6
我找到了解决方案:

我找到了解决我的问题的方法:

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

    BitmapImage bitmapImage = new BitmapImage();
    bitmapImage.SetSource(memoryStream);

    memoryStream.Close();
    memoryStream = null;
    byteBuffer = null;

    return bitmapImage;
}

我不知道在 .Net 6 中是否有所改变,但对我来说,这个解决方案并没有起作用。经过多次测试,我通过以下方式使其工作:1. 不关闭 memoryStream,因此删除了 memoryStream.Close(); 这一行;2. 在 bitmapImage.SetSource(memoryStream); 之前调用 BitmapImage.BeginInit(),同样地,3. 在 bitmapImage.SetSource(memoryStream); 之后调用 BitmapImage.EndInit()。我确认在我的情况下需要这三个步骤才能使其正常工作。 - notarobot

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接