我需要以最快的方式从byte []创建一个InMemoryRandomAccessStream。
我想出了这种方法
private static async Task<InMemoryRandomAccessStream> GetStreamAsync(byte[] bytes)
{
InMemoryRandomAccessStream stream = new InMemoryRandomAccessStream();
await stream.WriteAsync(bytes.AsBuffer());
stream.Seek(0);
return stream;
}
但不幸的是,它花费了大约8毫秒的时间,而就我们的目的而言,它实在太多了。
有没有更快的(也许是同步的)方法来达到相同的目的?
我正在寻找大约1毫秒或更短的时间。
谢谢!
答案 0 :(得分:0)
我需要IRandomAccessStream传递给CanvasBitmap.LoadAsync()才能使用Win2D api将图像加载到SpriteVisual中。
对于您的评论,也许IRandomAccessStream
确实是您所需要的,而不是InMemoryRandomAccessStream
。
这是从字节数组获取IAccessRandomStream的另一种方法:
private IRandomAccessStream GetStreamAsync(byte[] bytes)
{
var ms = new MemoryStream(bytes);
var stream = ms.AsRandomAccessStream();
stream.Seek(0);
return stream;
}
这种方法比原始方法要快。
但是,图像加载的速度有很多影响因素,我们只能尝试对其进行改进。
希望这对您有所帮助。