在Windows Phone上访问已保存的图像

时间:2014-08-27 05:30:46

标签: windows-phone

我正在为Windows Phone创建一个相机应用程序但是当我想将我保存的照片检索为BitmapImage时,似乎没有任何效果。我正在使用IsolatedStorageSettings来保存图像的路径,如下所示:

            Picture p = mediaLibrary.SavePictureToCameraRoll(fileName, e.ImageStream);
            if (!settings.Contains("lastImageTaken"))
            {
                //GetPath() requires using Microsoft.Xna.Framework.Media.PhoneExtensions;
                settings.Add("lastImageTaken", p.GetPath());
            }
            else
            {
                settings["lastImageTaken"] = p.GetPath();
            }
            settings.Save();

然后,一旦应用程序启动,我会尝试检索最后拍摄的照片,如下所示:

lastImageTaken = IsolatedStorageSettings.ApplicationSettings["lastImageTaken"] as string;


            Uri uri = new System.Uri(lastImageTaken, UriKind.RelativeOrAbsolute);
            BitmapImage image = new BitmapImage(uri);

            previouseImage.Source = image;

            if (image.PixelWidth < 1)
                debugText.Text += " FAILED";

我也尝试过这样的事情:

Uri uri = new System.Uri("file:///" + lastImageTaken.Replace("\\", "/"), UriKind.RelativeOrAbsolute);
            BitmapImage image = new BitmapImage(uri);

但似乎没有任何东西显示图像。图像的宽度始终显示为0,在调试文本上显示"FAILED"文本。 lastImageTaken显示为C:\Data\Users\Public\Camera Roll\SMCA_jpg.jpg

我还添加了ID_CAP_MEDIALIB_PHOTO

的功能

1 个答案:

答案 0 :(得分:1)

您似乎将图像保存到CameraRoll,但尝试从IsolatedStorage检索图像。这是两个不同的存储区域,访问方式不同。

为了将图像保存到IsolatedStorage,您需要替换它:

library.SavePictureToCameraRoll(fileName, e.ImageStream);

用这个:

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);
        }
    }
}

然后以与原始帖子中描述的方式相同的方式访问图像。 资料来源:http://msdn.microsoft.com/en-us/library/windows/apps/hh202956(v=vs.105).aspx#BKMK_SavingToTheMediaLibraryAndIsolatedStorage