我正在使用此代码将图像存储到相机操作完成时的隔离存储中。
void camera_Completed(object sender, PhotoResult e)
{
BitmapImage objImage = new BitmapImage();
//objImage.SetSource(e.ChosenPhoto);
//Own_Image.Source = objImage;
using (var isolatedStorage = IsolatedStorageFile.GetUserStoreForApplication())
{
fnam = e.OriginalFileName.Substring(93);
MessageBox.Show(fnam);
if (isolatedStorage.FileExists(fnam))
isolatedStorage.DeleteFile(fnam);
IsolatedStorageFileStream fileStream = isolatedStorage.CreateFile(fnam);
BitmapImage bitmap = new BitmapImage();
bitmap.SetSource(e.ChosenPhoto);
WriteableBitmap wb = new WriteableBitmap(bitmap);
wb.SaveJpeg(fileStream, wb.PixelWidth, wb.PixelHeight, 100, 100);
MessageBox.Show("File Created");
fileStream.Close();
}
}
现在我想从隔离存储中取出图像并将其显示在我的图像控件中。
有可能吗?
答案 0 :(得分:8)
是的。您可以使用此功能从IsolatedStorage加载图像:
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;
}
用法:
ImageControl.Source = GetImageFromIsolatedStorage(fnam);
答案 1 :(得分:2)
这样的事情:
public BitmapImage LoadImageFromIsolatedStorage(string path) {
var isf = IsolatedStorageFile.GetUserStoreForApplication();
using (var fs = isf.OpenFile(path, System.IO.FileMode.Open)) {
var image = new BitmapImage();
image.SetSource(fs);
return image;
}
}
在您的代码中
image1.Source = LoadImageFromIsolatedStorage("image.jpg");
答案 2 :(得分:0)
检查此代码段
public static void SaveImage( string name)
{
var bitmap = new BitmapImage();
bitmap.SetSource(attachmentStream);
var wb = new WriteableBitmap(bitmap);
var temp = new MemoryStream();
wb.SaveJpeg(temp, wb.PixelWidth, wb.PixelHeight, 0, 50);
using (var myIsolatedStorage = IsolatedStorageFile.GetUserStoreForApplication())
{
if (!myIsolatedStorage.DirectoryExists("foldername"))
{
myIsolatedStorage.CreateDirectory("foldername");
}
var filePath = Path.Combine("foldername", name + ".jpg");
using (IsolatedStorageFileStream fileStream = new IsolatedStorageFileStream(filePath, FileMode.Create, myIsolatedStorage))
{
fileStream.Write(((MemoryStream)temp).ToArray(), 0, ((MemoryStream)temp).ToArray().Length);
fileStream.Close();
}
}
}