C# 内存不足异常..在windows phone 8中

C# 内存不足异常..在windows phone 8中,c#,.net,windows-phone-7,windows-phone-8,C#,.net,Windows Phone 7,Windows Phone 8,我正在尝试从windows phone 8的照片库中获取图像。这是第一次它工作正常。我第一次从相机卷文件夹中获取图像,但当我试图从相册保存的图片中拍摄照片时,它抛出内存不足异常。。我不明白为什么会这样。感谢您的帮助 MediaImage mediaImage = new MediaImage(); BitmapImage image; private void Panorama_SelectionChanged_1(object sender, SelectionCh

我正在尝试从windows phone 8的照片库中获取图像。这是第一次它工作正常。我第一次从相机卷文件夹中获取图像,但当我试图从相册保存的图片中拍摄照片时,它抛出内存不足异常。。我不明白为什么会这样。感谢您的帮助

    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;
        }
}
MediaImage MediaImage=new MediaImage();
位图图像;
私有无效全景图\u选择已更改\u 1(对象发送者,选择更改已更改)
{
Panorama obj=发送方作为全景;
全景项目objPanoramaItem=(全景项目)obj.SelectedItem;
字符串FolderName=objPanoramaItem.Header.ToString();
PictureAlbum AlbumFolder=allAlbums.Where(album=>album.Name==FolderName.FirstOrDefault();
如果(FolderName==“摄影机卷”)
{
if(ImageListCameraRoll==null)
{
ImageListCameraRoll=新的ObservableCollection();
var CameraRollPictures=AlbumFolder.Pictures;
foreach(CameraRollPictures中的var图片)
{
mediaImage=新的mediaImage();
image=新的位图图像();
image.SetSource(picture.GetImage());
mediaImage.ImageFile=图像;
mediaImage.ImageName=图片.Name;
ImageListCameraRoll.Add(mediaImage);
}
}
ListboxCameraRoll.ItemsSource=ImageListCameraRoll;
}
如果(FolderName==“已保存图片1”)
{
if(ImageListSavedPictures==null)
{
ImageListSavedPictures=新的ObservableCollection();
var SavedPictures=AlbumFolder.Pictures;
foreach(保存图片中的var图片)
{
mediaImage=新的mediaImage();
image=新的位图图像();
image.SetSource(picture.GetImage());
mediaImage.ImageFile=图像;
mediaImage.ImageName=图片.Name;
ImageListSavedPictures.Add(mediaImage);
}
}
ListboxSavedPictures.ItemsSource=ImageListSavedPictures;
}
}

我在这里所做的是尝试在“全景”项目上更改图片。全景项目基于照片库中的不同文件夹。

将文件夹中的所有图像加载到内存中可能会占用大量内存空间。除非你真的需要全尺寸的图片,否则我建议你用它来加载低分辨率的图片。用户选择要对哪些照片执行操作后,您始终可以返回原始照片

image.SetSource(picture.GetThumbnail());

将文件夹中的所有图像加载到内存中可能会占用大量内存空间。除非你真的需要全尺寸的图片,否则我建议你用它来加载低分辨率的图片。用户选择要对哪些照片执行操作后,您始终可以返回原始照片

image.SetSource(picture.GetThumbnail());

不太熟悉相册API,但在我看来,您正在将文件夹中所有图像的全分辨率版本加载到内存中。这就是你想要做的,因为如果文件夹很大,它可能会占用相当多的内存。那么还有其他方法吗..比如压缩或其他什么,在哪行出现错误?刚刚得到解决..谢谢帮助..向每个人分享你的解决方案,这样对其他人会有帮助。不太熟悉相册API,但在我看来,您正在将文件夹中所有图像的全分辨率版本加载到内存中。这就是你想要做的,因为如果文件夹太大,它可能会占用一些内存。那么还有其他方法吗..比如压缩或其他什么你在哪一行遇到错误?刚刚得到解决..谢谢帮助..向每个人分享你的解决方案,这样它将帮助其他人。