我正在为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
答案 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