将图库中的照片添加到 wp8.1 中的联系人

Add photo from library to contact in wp8.1

在我的 windows phone 应用程序中,我试图创建一个新联系人并添加一张从相机拍摄的图像,但它似乎没有用。 无论我做什么,照片都是空白的。 它对我有用的唯一方法是使用我在资产文件夹中添加的图像(而不是来自相机),甚至尝试将图像添加到本地资产文件夹然后上传它 - 不起作用......

(没有错误,但是添加的联系人没有照片)

await contact.SetDisplayPictureAsync(stream.AsStream().AsInputStream());

这是我的代码:
当我从商店中获取选定的图像时,我将其保存到位图图像并使用其像素缓冲区。

public async void AddContact(string displayName, string mobile, string email, byte[] data)
        {
            var store = await ContactStore.CreateOrOpenAsync();
            var contact = new StoredContact(store)
            {
                DisplayName = displayName
            };

            var props = await contact.GetPropertiesAsync();
            props.Add(KnownContactProperties.Email, email);
            props.Add(KnownContactProperties.MobileTelephone, mobile);

            using (var stream = bitmap.PixelBuffer.AsStream())
            {
                await contact.SetDisplayPictureAsync(stream.AsInputStream());
            }
            await contact.SaveAsync();
        }

请帮忙!

我正在做同样的事情来设置联系人的个人资料图片,但它不起作用。但是当我从存储文件中获取 IRandomAccessStream 时,它在这里工作就是我正在做的

                var file = await folder.GetFileAsync("filename.jpeg"));
               //Or you can get file direclty from localfolder
               // var file = await ApplicationData.Current.LocalFolder.GetFileAsync("filename.jpeg");
                using (Windows.Storage.Streams.IRandomAccessStream fileStream = await file.OpenAsync(Windows.Storage.FileAccessMode.Read))
                {
                    await contact.SetDisplayPictureAsync(fileStream);
                }
                await contact.SaveAsync();

编辑 如何使用媒体捕获将图片保存到本地存储。

 ImageEncodingProperties imgFormat = ImageEncodingProperties.CreateJpeg();

        //Save file to local storage
        StorageFile file = await ApplicationData.Current.LocalFolder.CreateFileAsync(
                "MyPhoto.jpg", CreationCollisionOption.ReplaceExisting);

        await mediaCapture.CapturePhotoToStorageFileAsync(imgFormat, file);

将图像保存到本地存储后,您可以从我这里获取图像

编辑 2 如果您正在使用文件打开选择器,您可以试试这个。

 public async void ContinueFileOpenPicker(Windows.ApplicationModel.Activation.FileOpenPickerContinuationEventArgs args)
    {
        if (args.Files.Count > 0)
        {
            var filePath  = args.Files[0].Path;
            StorageFile file = await Windows.Storage.StorageFile.GetFileFromPathAsync(filePath);

            using (Windows.Storage.Streams.IRandomAccessStream fileStream = await file.OpenAsync(Windows.Storage.FileAccessMode.Read))
            {
                await contact.SetDisplayPictureAsync(fileStream);
            }
       }