保存使用 FileOpenPicker 选取的图像

Save image picked with FileOpenPicker

我想创建一个应用程序,用户可以在其中 select 本地照片存储中的多张图片,我想将这些照片加载到应用程序中。用户每次打开应用程序时都必须能够找到它们。我使用 FileOpenPicker 让用户 select 使用 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();
        }
    }
}

谢谢大家

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

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

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

其中文件是代码中显示的 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 在 Minimal Template 中的 Windows.Storage.ApplicationData.Current 上有一个更全面的设置服务(与备选的 Blank Template 相对),这就是你想改用。