2013-06-04 9 views
5

Sto utilizzando questo codice per archiviare l'immagine nella memoria isolata al momento dell'azione della fotocamera completata.Come caricare un'immagine da una memoria isolata nel controllo immagine su 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(); 
    } 
} 

Ora voglio prendere l'immagine dall'archivio isolato e visualizzarla nel mio controllo immagine.

È possibile?

risposta

2

Qualcosa di simile a questo:

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

Nel codice

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

Sì, lo è. È possibile utilizzare questa funzione per caricare un'immagine da 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; 
} 

Usage:

ImageControl.Source = GetImageFromIsolatedStorage(fnam); 
+0

Sta funzionando bene. E sposto la pagina successiva faccio qualche operazione. e torna a questo vecchio schermo. Qui l'immagine caricata non viene visualizzata. E scrivo la stessa chiamata di funzione nell'evento page_Loaded. Perché non viene caricato ancora una volta. utilizzando (var isolatedStorage = IsolatedStorageFile.GetUserStoreForApplication()) { if (isolatedStorage.FileExists (fnam)) { Own_Image.Source = GetImageFromIsolatedStorage (fnam); }} – selvam

0

controllo questo frammento

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

}

Problemi correlati