0

我正在尝试在 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 图像。有没有办法做到这一点?

4

1 回答 1

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);
于 2013-07-15T09:12:13.443 回答