2013-06-04 16 views
5

Ich verwende diesen Code, um das Bild zum Zeitpunkt der Kameraaktion im Isolatspeicher zu speichern.Wie lade ich ein Bild aus einem isolierten Speicher in die Bildsteuerung auf Windows Phone?

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

Jetzt möchte ich das Bild aus dem isolierten Speicher nehmen und es in meiner Bildsteuerung anzeigen.

Ist es möglich?

Antwort

2

Etwas wie folgt aus:

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

In Ihrem Code

image1.Source = LoadImageFromIsolatedStorage("image.jpg"); 
8

Ja, es ist. Sie können diese Funktion verwenden Bild von IsolatedStorage zu laden:

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

Verbrauch:

ImageControl.Source = GetImageFromIsolatedStorage(fnam); 
+0

Es funktioniert gut. Und ich bewege die nächste Seite etwas Operation. und komm zurück zu diesem alten Bildschirm. Hier wird das geladene Bild nicht angezeigt. Und ich schreibe den gleichen Funktionsaufruf in page_Loaded Event. Warum wird es nicht noch einmal geladen? Verwenden (var isolatedStorage = IsolatedStorageFile.GetUserStoreForApplication()) { if (isolatedStorage.FileExists (fnam)) { Own_Image.Source = GetImageFromIsolatedStorage (fnam); }} – selvam

0

Überprüfung dieser Ausschnitt

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

}