我正在尝试从设备的图片库中获取所有照片,然后使用<GridView/>
带有<Image/>
内部项目模板的应用程序显示,但我没有找到没有问题的方法。我需要BitmapImages
从StorageFiles
我得到的东西中创建。
首先,我尝试创建s 并将文件路径BitmapImage
设置UriSource
为新的 s,如下所示:Uri
var picsLib = await KnownFolders.PicturesLibrary.GetFilesAsync(CommonFileQuery.OrderByDate);
var picsList = new List<BitmapImage>();
foreach (StorageFile pic in picsLib)
{
var imgSrc = new BitmapImage();
imgSrc.UriSource = new Uri(pic.Path, UriKind.Absolute);
picsList.Add(imgSrc);
}
PhotosView.ItemsSource = picsList;
但图像不显示。
之后,我尝试使用流:
var imgSrc = new BitmapImage();
var picStream = await pic.OpenReadAsync();
imgSrc.SetSource(picStream);
picsList.Add(imgSrc);
当然,我得到了System.OutOfMemoryException
。
接下来,我尝试使用缩略图:
var imgSrc = new BitmapImage();
var picThumb = await pic.GetThumbnailAsync(Windows.Storage.FileProperties.ThumbnailMode.PicturesView,
200, Windows.Storage.FileProperties.ThumbnailOptions.ResizeThumbnail);
imgSrc.SetSource(picThumb);
picsList.Add(imgSrc);
但我意识到这就像溪流一样OutOfMemory
。如果我将其限制为仅获取 10 或 20 张图像的缩略图,效果很好,但我确实需要显示所有照片。
XAML 不是问题,因为当我限制要加载的图像数量时它可以正常工作。
该应用程序旨在供任何人在完成后从 Windows Phone 商店下载它,因此图像的大小会有所不同,因为 Windows Phone 设备的图片库包含存储在用户手机上的几乎所有照片,包括来自设备的相机、保存的图像等。