C# 如何在应用程序'中保存图像或文件流;什么样的设置?超宽带#
我有一个带有一些ListViewItems的列表视图,每个视图都包含一个文本框和一个图像 用户可以添加或删除这些ListViewItems,因此我希望在每次关闭应用程序时将它们保存在设置中,并在每次打开应用程序时加载它们 我设法将文本框的文本保存在设置中并加载它们,但是如何保存和加载图像/图像源/文件流? 当用户在FileOpenPicker中选择一个图像,然后使用指向该图像的文件流创建位图图像,作为ListViewItem的图像源时,将创建图像C# 如何在应用程序'中保存图像或文件流;什么样的设置?超宽带#,c#,image,uwp,settings,filestream,C#,Image,Uwp,Settings,Filestream,我有一个带有一些ListViewItems的列表视图,每个视图都包含一个文本框和一个图像 用户可以添加或删除这些ListViewItems,因此我希望在每次关闭应用程序时将它们保存在设置中,并在每次打开应用程序时加载它们 我设法将文本框的文本保存在设置中并加载它们,但是如何保存和加载图像/图像源/文件流? 当用户在FileOpenPicker中选择一个图像,然后使用指向该图像的文件流创建位图图像,作为ListViewItem的图像源时,将创建图像 private async void openF
private async void openFileInputEvent(object sender, RoutedEventArgs e)
{
var picker = new Windows.Storage.Pickers.FileOpenPicker();
picker.ViewMode = Windows.Storage.Pickers.PickerViewMode.Thumbnail;
picker.SuggestedStartLocation = Windows.Storage.Pickers.PickerLocationId.PicturesLibrary;
picker.FileTypeFilter.Add(".jpg");
picker.FileTypeFilter.Add(".jpeg");
picker.FileTypeFilter.Add(".png");
Windows.Storage.StorageFile file = await picker.PickSingleFileAsync();
if (file != null)
{
using (IRandomAccessStream fileStream = await file.OpenAsync(Windows.Storage.FileAccessMode.Read))
{
BitmapImage tmpimg = new BitmapImage();
await tmpimg.SetSourceAsync(fileStream);
imglist.Add(tmpimg);
}
}
else
{
var dialog = new MessageDialog("File not chosen", "No chosen Image");
await dialog.ShowAsync();
imglist.Add(new BitmapImage());
}
}
所有ListViewItems图像的位图图像存储在位图图像列表中(list
),通过选择列表上的最后一项(imglist[imglist.Count-1]
)进行选择
我想将这些图像/它们的源/文件流保存并加载到它们的源,有什么办法吗?
我可以保存图像的路径,但是我以后不能创建一个以该路径为源的图像,它必须是一个文件流
如何在应用程序设置中保存图像或文件流?超宽带#
LocalSettings
不支持存储大数据,恐怕您无法将位图图像直接存储到LocalSettings
中,对于您的场景,我们建议您将图像存储在应用程序的中,并使用访问它们。如果图像源来自本地计算机,如何执行此操作(它们是通过FileOpenPicker选择的)?请检查uwp,您可以访问具有uri的文件。但是如何从计算机获取所选文件的uri?您只需要获取图像文件名和存储的文件夹,例如,如果您将图像文件存储到localstate
,您可以像
ms>一样获取uri-appdata:///local=localstateforder
img.png是您的图像名称,但是当文件存储在C驱动器(C:/image.png)上时,情况会怎样呢?您能从中创建一个uri吗?或者您能将所选文件复制到应用程序的文件夹中,使其始终可访问吗?