Я пытаюсь получить все фотографии из библиотеки изображений устройства и показать затем приложение, используя <GridView/>
с внутри его шаблона элемента, но я не нашел способ сделать это без проблем. Мне нужно создать BitmapImages
из StorageFiles
, который я получаю.C# - Set (сотни) StorageFiles как BitmapImages (без потока)
Сначала я попытался создать в BitmapImage
с и установив UriSource
как новый Uri
S с путями файлов, например:
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 Store по завершении, поэтому размер изображений зависит от того, как библиотека изображений на устройствах Windows Phone содержит практически любые фотографии, хранящиеся на телефоне пользователя, включая фотографии с камеры устройства, сохраненные изображения и т. д.
У вас нет никакой информации о размере изображения. Я бы счел это необходимым. –
@RobertHarvey Добавил это в сообщение. –
Не используйте «EDIT» в своих сообщениях; это не форум. Я все еще не вижу никакой информации о том, сколько хранилищ используют ваши фотографии; говоря, что «размер изображений меняется» не говорит нам ничего. –