【发布时间】:2016-05-27 16:42:18
【问题描述】:
我正在开发一个 UWP 应用程序,其中这个 CameraHelper 类使用以下行存储从网络摄像头捕获的图像:
MediaCapture.CapturePhotoToStreamAsync(ImageEncodingProperties.CreateBmp(), img);
其中 img 之前声明为 img = new InMemoryRandomAccessStream();。
现在,由于我还需要将其存储到数据库中,因此我需要将其转换为字节数组 - 我这样做是:
bytearray = new byte[img.Size];
await img.ReadAsync(bytearray.AsBuffer(), (uint) img.Size, InputStreamOptions.None);
现在,稍后在代码中,我尝试将这个字节数组转换回 InMemoryRandomAccessStream:
InMemoryRandomAccessStream randomAccessStream = new InMemoryRandomAccessStream();
await randomAccessStream.WriteAsync(img.AsBuffer());
randomAccessStream.Seek(0);
BitmapDecoder decoder = await BitmapDecoder.CreateAsync(randomAccessStream);
最后一行导致问题标题出现异常!有任何想法吗?我确信 InMemoryRandomAccessStream 很好,因为我实际上可以将它转换为 SoftwareBitmapSource,并且我可以正确地看到屏幕上的图像。
【问题讨论】:
-
你能说出你想要达到的目标吗?如果
img是一个Straem,为什么不直接使用BitmapDecoder decoder = await BitmapDecoder.CreateAsync(img);? -
我正在尝试将 img 保存的图像存储到数据库中,这意味着我需要将其转换为字节数组,然后(从数据库中检索时)将其重新转换回 InMemoryRandomAccessStream 所以我可以将其显示为位图。
-
所以第二部分只是用于从数据库中读取图像。你看过at this post吗?