使用c#windows 8.1 *************从base64转换为图像的任何可执行函数。 我试过了:
public Image byteArrayToImage(byte[] byteArrayIn)
{
Image returnImage = null;
using (MemoryStream ms = new MemoryStream(byteArrayIn))
{
returnImage = Image.FromStream(ms);
}
return returnImage;
}
FromStream不适合Windows 8.1
答案 0 :(得分:2)
首先,Windows.UI.Xaml.Controls.Image
类是控件对象,而不是实际的位图类型对象。你真正想要的是BitmapImage
。当然,鉴于这种误解,你可能会遇到代码的其他问题;你没有显示这种方法的调用者,但如果你在这里混淆了这种类型,你可能会把它混淆在别的地方。所以必须修复。
其次,与WinRT中的许多内容一样,执行您想要的操作比使用桌面API时要复杂得多。 :(
那就是说,这样的事情应该有效:
public Windows.UI.Xaml.Media.Imaging.BitmapImage byteArrayToImage(byte[] byteArrayIn)
{
using (InMemoryRandomAccessStream stream = new InMemoryRandomAccessStream())
{
await stream.WriteAsync(byteArrayIn.AsBuffer(0, byteArrayIn.Length));
stream.Seek(0);
BitmapImage image = new BitmapImage();
await image.SetSourceAsync(stream);
return image;
}
}
然后,您可以将该对象设置为Source
控制对象的Image
属性。
一些注意事项:
Bitmap
对象要求Stream
实例保持不受限制。对于WinRT,在位图初始化之后处理流的AFAIK很好。AsBuffer()
方法是一种扩展方法。如果代码中尚未包含using System.Runtime.InteropServices.WindowsRuntime;
,则需要在其中加入{{1}}。另见: