在Windows Phone 7中,如何将BitmapImage保存到本地存储?

在Windows Phone 7中,如何将BitmapImage保存到本地存储?

问题描述:

在Windows Phone 7中,如何将BitmapImage保存到本地存储?如果在接下来的几天内再次请求,我需要保存图像进行缓存并重新加载。在Windows Phone 7中,如何将BitmapImage保存到本地存储?

如果将文件保存到IsolatedStorage中,您可以设置一个相对路径从那里查看它。

下面是将XAP中包含的文件(作为资源)保存到独立存储中的快速示例。

using (IsolatedStorageFile isoStore = IsolatedStorageFile.GetUserStoreForApplication()) 
{ 
    if (!isoStore.FileExists(fileName) 
    { 
    var sr = Application.GetResourceStream(new Uri(fileName, UriKind.Relative)); 

    using (var br = new BinaryReader(sr.Stream)) 
    { 
     byte[] data = br.ReadBytes((int)sr.Stream.Length); 
     string strBaseDir = string.Empty; 
     const string DelimStr = "/"; 
     char[] delimiter = DelimStr.ToCharArray(); 
     string[] dirsPath = fileName.Split(delimiter); 

     // Recreate the directory structure 
     for (int i = 0; i < dirsPath.Length - 1; i++) 
     { 
      strBaseDir = Path.Combine(strBaseDir, dirsPath[i]); 
      isoStore.CreateDirectory(strBaseDir); 
     } 

     using (BinaryWriter bw = new BinaryWriter(isoStore.CreateFile(fileName))) 
     { 
      bw.Write(data); 
     } 
    } 
    } 
} 

您还可能有兴趣在由Ben GracewoodPeter Nowaks创建的图像缓存器。他们都将图像保存到独立存储中,并从那里加载它们。

我使用的另一种方法是将您在xap中为图像检索到的流直接传递到独立的存储文件中。不是很多移动部件。

 using (var isoStore = IsolatedStorageFile.GetUserStoreForApplication()) { 

      var bi = new BitmapImage(); 
      bi.SetSource(picStreamFromXap); 
      var wb = new WriteableBitmap(bi); 

      using (var isoFileStream = isoStore.CreateFile("pic.jpg")) 
       Extensions.SaveJpeg(wb, isoFileStream, wb.PixelWidth, wb.PixelHeight, 0, 100); 

     } 
+0

可悲的是,这只适用于JPG文件,不适用于其他媒体类型。 – 2011-12-07 03:31:45