Windows 8 如何从People应用程序获取个人资料图片(图像)

Windows 8 如何从People应用程序获取个人资料图片(图像),windows-8,windows-runtime,microsoft-metro,windows-store-apps,winrt-xaml,Windows 8,Windows Runtime,Microsoft Metro,Windows Store Apps,Winrt Xaml,我正在尝试从People应用程序获取个人资料图片。我曾经 Windows.ApplicationModel.Contacts.Contact=新联系人() 我从Property contact获得缩略图。缩略图 我需要将此缩略图转换为StorageFile。你能为解决这个问题提供一些意见吗 并且,在使用以下代码时: IRandomAccessStreamWithContentType stream = awaitcontactInfo.Thumbnail.OpenReadAsync(); if

我正在尝试从People应用程序获取个人资料图片。我曾经

Windows.ApplicationModel.Contacts.Contact=新联系人()

我从Property contact获得缩略图。缩略图

我需要将此缩略图转换为StorageFile。你能为解决这个问题提供一些意见吗

并且,在使用以下代码时:

IRandomAccessStreamWithContentType stream = awaitcontactInfo.Thumbnail.OpenReadAsync();

if(stream != null && stream.Size > 0)
{
  //
}

有时我会遇到
RPC服务器不可用异常
。有时streamSize为零。

您正在创建
联系人
类的新实例。你不必这样做来与别人取得联系。您应该使用
接触器选择器

var contactPicker=new Windows.ApplicationModel.Contacts.contactPicker();
contactPicker.CommitButtonText=“选择”;
ContactInformation contact=等待contactPicker.PickSingleContactAsync();
如果(联系人!=null)
{
irandomaccesstreamwithcontenttype stream=await contact.GetThumbnailAsync();
if(stream!=null&&stream.Size>0)
{
var file=wait ApplicationData.Current.TemporaryFolder.CreateFileAsync(“MyContactThumb.png”,CreationCollisionOption.GenerateUniqueName);
//您还可以使用FileSavePicker将文件保存在用户定义的位置。
Windows.Storage.Streams.Buffer MyBuffer=新的Windows.Storage.Streams.Buffer(Convert.ToUInt32(stream.Size));
IBuffer iBuf=wait stream.ReadAsync(MyBuffer,MyBuffer.Capacity,InputStreamOptions.None);
wait FileIO.WriteBufferAsync(文件,iBuf);
}
}