2

使用以下代码,我可以获得IRandomAccessStreamWithContentType代表联系人的拇指

var contactPicker = new ContactPicker();
contactPicker.SelectionMode = ContactSelectionMode.Contacts;

var contact = await contactPicker.PickSingleContactAsync();
var thumb = await contact.GetThumbnailAsync();

但是处理IRandomAccessStreamWithContentType 获取图像实例和图像文件的最佳方法是什么?

4

1 回答 1

3

您应该将其作为IRandomAccessStream包含图像的普通处理:

using (var stream = await contact.GetThumbnailAsync())
{
    BitmapDecoder decoder = await BitmapDecoder.CreateAsync(stream);
    BitmapFrame frame = await decoder.GetFrameAsync(0);

    var bitmap = new WriteableBitmap((int)frame.PixelWidth, (int)frame.PixelHeight);
    stream.Seek(0);
    await bitmap.SetSourceAsync(stream);
}

从这里开始,您可以将其设置WriteableBitmap为源以Image控制或以任何其他方式使用它。

Seek调用是必需的,因为已读取流以获取图像大小,因此需要在读取图像本身之前重置位置。

于 2013-03-02T06:48:00.067 回答