我試圖從設備的圖片庫中獲取所有照片,然後在應用中使用<GridView/>
和<Image/>
在其項目模板中顯示,但是我沒有找到解決問題的方法。 我需要從我得到的StorageFiles
中創建BitmapImages
。C# - 將數百個StorageFiles設置爲BitmapImages(無數據流)
首先我試圖創建BitmapImage
S和與文件的路徑設置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商店下載的應用程序使用,因此圖像大小各不相同,因爲Windows Phone設備的圖片庫幾乎包含存儲在用戶手機上的任何照片,包括來自設備相機的照片,已保存的圖像等。
您沒有包含任何有關圖像尺寸的信息。我會考慮這種必要的。 – 2015-02-10 23:38:07
@RobertHarvey將此添加到帖子中。 – 2015-02-10 23:56:03
不要在你的帖子中使用「編輯」;這不是一個論壇。我仍然看不到有關您的照片使用多少存儲空間的任何信息;說「圖像的大小各不相同」並沒有告訴我們任何事情。 – 2015-02-10 23:57:43