如何从隔离存储(WP8)中打开和拆分最新图像?

时间:2014-11-03 18:25:02

标签: c# windows-phone-8 isolatedstorage

我目前正在开发一款可执行以下任务的应用:

1-拍摄照片并将其保存在两者中:隔离存储和照片库。

2 - 然后将图片加载到不同的页面中,同时将图片分成不同的部分。

所以我按照本教程学习如何拍摄照片并保存:

http://msdn.microsoft.com/en-us/library/windows/apps/hh202956(v=vs.105).aspx

现在我被困在查看和拆分不同页面中最新图像的部分。

任何解决方案或想法?

1 个答案:

答案 0 :(得分:0)

  

很抱歉不清楚这一点,我只想查看我的应用程序捕获的最新照片

示例相机应用程序将照片保存到相机胶卷以及应用程序隔离存储。这是他们使用的代码段。

// Save photo as JPEG to the local folder.
using (IsolatedStorageFile isStore = IsolatedStorageFile.GetUserStoreForApplication())
{
    using (IsolatedStorageFileStream targetStream = isStore.OpenFile(fileName, FileMode.Create, FileAccess.Write))
    {
        // Initialize the buffer for 4KB disk pages.
        byte[] readBuffer = new byte[4096];
        int bytesRead = -1;

        // Copy the image to the local folder. 
        while ((bytesRead = e.ImageStream.Read(readBuffer, 0, readBuffer.Length)) > 0)
        {
            targetStream.Write(readBuffer, 0, bytesRead);
        }
    }
}

正如您所看到的,他们使用文件名fileName保存它,因此您所要做的就是保留您使用的所有List<string> fileName。每次保存新图像时,都要将fileName添加到列表中。

您可以使用ApplicationSettings

保存列表
if (!IsolatedStorageSettings.ApplicationSettings.Contains("recent_images"))
{
    IsolatedStorageSettings.ApplicationSettings.Add("recent_images", YOUR_LIST);        
}
IsolatedStorageSettings.ApplicationSettings.Save();    

这样,下次加载应用程序时,您可以再次获取List(所以基本上你将列表重新标记)

List<string> recent_images = (List<string>) IsolatedStorageSettings.ApplicationSettings["recent_images"];

现在加载您最近的图片

<!-- create the container in xaml -->
<Image x:Name="myImage"></Image>


// this function loads an image from isolated storage and returns a bitmap
private static BitmapImage GetImageFromIsolatedStorage(string imageName)
{
    var bimg = new BitmapImage();
    using (var iso = IsolatedStorageFile.GetUserStoreForApplication())
    {
        using (var stream = iso.OpenFile(imageName, FileMode.Open, FileAccess.Read))
        {
            bimg.SetSource(stream);
        }
    }
    return bimg;
}


// load the first image in recent images
BitmapImage first = GetImageFromIsolatedStorage(recent_images[0]);

// set the BitmapImage as the source of myImage to display it on the screen
this.myImage.Source = first;

只需逐行阅读他们的代码和我的代码。如果你不跳过步骤,那就太难了。