loo*_*oop 0 .net c# windows-phone-7 windows-phone-8
我试图从Windows Phone 8的照片库中获取图像,并且它第一次正常工作.我第一次从Camera Roll文件夹中获取图像,但是当我尝试从相册Saved Picture中拍摄图片时,它会抛出Out of Memory Exception ..我不明白为什么会发生这种情况.任何帮助表示赞赏.
MediaImage mediaImage = new MediaImage();
BitmapImage image;
private void Panorama_SelectionChanged_1(object sender, SelectionChangedEventArgs e)
{
Panorama obj = sender as Panorama;
PanoramaItem objPanoramaItem = (PanoramaItem)obj.SelectedItem;
string FolderName = objPanoramaItem.Header.ToString();
PictureAlbum AlbumFolder = allAlbums.Where(album => album.Name == FolderName).FirstOrDefault();
if (FolderName == "Camera Roll")
{
if (ImageListCameraRoll == null)
{
ImageListCameraRoll = new ObservableCollection<MediaImage>();
var CameraRollPictures = AlbumFolder.Pictures;
foreach (var picture in CameraRollPictures)
{
mediaImage = new MediaImage();
image = new BitmapImage();
image.SetSource(picture.GetImage());
mediaImage.ImageFile = image;
mediaImage.ImageName = picture.Name;
ImageListCameraRoll.Add(mediaImage);
}
}
ListboxCameraRoll.ItemsSource = ImageListCameraRoll;
}
if (FolderName == "Saved Pictures1")
{
if (ImageListSavedPictures == null)
{
ImageListSavedPictures = new ObservableCollection<MediaImage>();
var SavedPictures = AlbumFolder.Pictures;
foreach (var picture in SavedPictures)
{
mediaImage = new MediaImage();
image = new BitmapImage();
image.SetSource(picture.GetImage());
mediaImage.ImageFile = image;
mediaImage.ImageName = picture.Name;
ImageListSavedPictures.Add(mediaImage);
}
}
ListboxSavedPictures.ItemsSource = ImageListSavedPictures;
}
}
Run Code Online (Sandbox Code Playgroud)
我在这里做的是试图获取全景项目更改事件的图片.Panorama项目基于照片库中的不同文件夹.
将文件夹中的所有图像加载到内存中可能会占用大量内存空间.除非你真的需要全尺寸图像,否则我建议使用GetThumbnail()来加载低分辨率版本的照片.一旦用户选择了要执行操作的照片,您就可以随时返回原件.
image.SetSource(picture.GetThumbnail());
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1197 次 |
最近记录: |