根据this,以下代码可用于将字节数组转换为BitmapImage:
public static async Task<BitmapImage> ByteArrayToBitmapImage(this byte[] byteArray)
{
if (byteArray != null)
{
using (var stream = new InMemoryRandomAccessStream())
{
await stream.WriteAsync(byteArray.AsBuffer());
var image = new BitmapImage();
stream.Seek(0);
image.SetSource(stream);
return image;
}
}
return null;
}
但是,我得到了,“'System.Array'不包含'AsBuffer'的定义,并且没有扩展方法'AsBuffer'可以找到类型'System.Array'的第一个参数'(是你吗?)缺少using指令或程序集引用?)“
“var stream”赋值是否过于模糊(隐式类型)并且我需要为“stream”var指定特定的数据类型? System.Array以外的东西?
也许这个,来自“Windows Store Apps Succinctly”是一个线索: 缓冲区/字节数组 - System.Runtime.InteropServices.WindowsRuntime。 WindowsRuntimeBufferExtensions:此类中的扩展方法提供了在.NET字节数组和WinRT缓冲区内容之间移动的方法,公开为IBuffer实现。
...但如果是的话,那对我来说不足以让他知道如何处理它。而不是“TMI”,它是“NEI”(没有足够的信息)。
答案 0 :(得分:8)
问题是编译器没有找到extension method AsBuffer()
。确保您引用了名称空间System.Runtime.InteropServices.WindowsRuntime
,即
using System.Runtime.InteropServices.WindowsRuntime;
如果您还没有,还需要add a reference到相应的DLL:
命名空间:System.Runtime.InteropServices.WindowsRuntime
程序集:System.Runtime.WindowsRuntime(在System.Runtime.WindowsRuntime.dll中)