我正在尝试在WP8中使用蓝牙从我的应用程序在设备上发送图像,并在我的应用程序中显示在另一台设备上。接收器有一个StreamSocket对象来读取它的数据,如下面的代码
await _dataReader.LoadAsync(4);
uint messageLen = (uint)_dataReader.ReadInt32();
await _dataReader.LoadAsync(messageLen);
string imageData _dataReader.ReadString(messageLen);
然后我必须将所有收到的数据(图像)保存在设备上,然后从存储的数据中创建一个Stream对象,将其提供给BitmapSource.SetSource(Stream)函数,以便能够在我的应用程序上显示此图像
var image = new BitmapImage();
image.SetSource(stream);
我想做的就是不要跳过这个双重工作并直接将StreamSocket对象(从蓝牙连接)转换为Stream对象并制作BitmapSource图像。有没有办法做到这一点?
答案 0 :(得分:1)
Yo可以将收到的数据存储在byte[]
缓冲区中,然后从中创建流。请尝试以下方法:
await _dataReader.LoadAsync(4);
uint messageLen = (uint)_dataReader.ReadInt32();
await _dataReader.LoadAsync(messageLen);
byte[] buffer = new byte[messageLen];
_dataReader.ReadBytes(buffer);
MemoryStream ms = new MemoryStream(buffer);
var image = new BitmapImage();
image.SetSource(ms);