保存使用FileOpenPicker选取的图像

时间:2015-11-27 18:32:15

标签: uwp windows-10-mobile

我想创建一个应用,用户可以从其本地照片存储中选择多个图像,我想将这些照片加载到应用中。用户每次打开应用程序时都必须能够找到它们。我使用FileOpenPicker让用户使用 PickMultipleFilesAsync()方法选择照片。现在我不知道如何在下次打开应用程序时保存照片以便向用户显示。

这是我的代码:

private async void AddButton_Click(object sender, RoutedEventArgs e)
{
    FileOpenPicker openPicker = new FileOpenPicker();
    openPicker.ViewMode = PickerViewMode.Thumbnail;
    openPicker.SuggestedStartLocation = PickerLocationId.PicturesLibrary;
    openPicker.FileTypeFilter.Add(".jpg");
    openPicker.FileTypeFilter.Add(".jpeg");
    openPicker.FileTypeFilter.Add(".bmp");
    openPicker.FileTypeFilter.Add(".png");
    IReadOnlyList<StorageFile> files = await openPicker.PickMultipleFilesAsync();
    if (files.Count > 0)
    {
        foreach (StorageFile file in files)
        {
            BitmapImage bitmapImage = new BitmapImage();
            bitmapImage.DecodePixelHeight = 332;
            bitmapImage.DecodePixelWidth = 200;
            IRandomAccessStream stream = await file.OpenAsync(FileAccessMode.Read);
            await bitmapImage.SetSourceAsync(stream);
            Wallpapers.Add(bitmapImage);
            stream.Dispose();
        }
    }
}

谢谢大家。

1 个答案:

答案 0 :(得分:1)

如果我正确理解您的问题,您想要记住照片保存位置(或照片的复制位置 - 并不重要)。您必须使用“设置”服务。

您可以使用Windows.Storage.ApplicationData.Current.LocalSettings.Values设置字典保存文件路径等信息,以便以后调用。

例如: Windows.Storage.ApplicationData.Current.LocalSettings.Values["PhotosPath"] = file.Path;

其中file是StorageFile对象,如代码所示,下次检索Windows.Storage.ApplicationData.Current.LocalSettings.Values["PhotosPath"]以使用Path初始化文件对象时。

您可以通过声明using Windows.Storage;命名空间(我认为您已经为StorageFile做过)来缩短上面的代码行,并且只是使用 ApplicationData.Current.LocalSettings.Values["PhotosPath"]代表您的代码。

进一步的建议:如果您在项目中使用T10 Template,则不希望直接使用Windows.Storage.ApplicationData.Current.LocalSettings.Values进行设置。 T10有一个更全面的设置服务,建立在最小模板中的Windows.Storage.ApplicationData.Current(而不是替代空白模板),这就是你想要的改为使用。