C# – Save and Load image from Isolated Storage (Windows Phone)

csilverlightsilverlight-4.0windows-phone-7

I have found a very usefull class on this link: images caching – that help me to make logic for caching images. But in my case I have this:

 private void DetailView_SelectionChanged(object sender, SelectionChangedEventArgs e)
            {
                                   SaveAndLoadImage(feedItem);


            }

And in this method I save and load image from isolated storage. But I can't load file imidiately because of some permission (Operation not permitted on IsolatedStorageFileStream.). How can I correct my logic to save and load images immediately?

  public void SaveAndLoadImage(MediaItemViewModel curItem)
            {
                string url = string.Empty;
                if (!string.IsNullOrEmpty(curItem.ThumbUrl))
                {
                    url = curItem.ThumbUrl;
                }
                if ((string.IsNullOrEmpty(curItem.ThumbUrl)) && (!string.IsNullOrEmpty(curItem.MediaUrl)))
                {
                    url = curItem.MediaUrl;
                }
                if ((!string.IsNullOrEmpty(url)) && (CacheImageFile.GetInstance().IsOnStorage(new Uri(url)) == false))
                {
                    CacheImageFile.DownloadFromWeb(new Uri(url));

                }

                    curItem.ImageSource = CacheImageFile.ExtractFromLocalStorage(new Uri(url)) as BitmapImage;

            }

Best Answer

have a look at below link

http://www.windowsphonegeek.com/tips/All-about-WP7-Isolated-Storage---Read-and-Save-Images

for loading images from isolated storage. using streams

BitmapImage bi = new BitmapImage();

            using (IsolatedStorageFile myIsolatedStorage = IsolatedStorageFile.GetUserStoreForApplication())
            {
                using (IsolatedStorageFileStream fileStream = myIsolatedStorage.OpenFile("logo.jpg", FileMode.Open, FileAccess.Read))
                {
                    bi.SetSource(fileStream);
                    this.img.Height = bi.PixelHeight;
                    this.img.Width = bi.PixelWidth;
                }
            }
            this.img.Source = bi;
Related Topic