Seiten

Dienstag, 25. Oktober 2011

Windows Phone 7 - Image herunterladen, anzeigen und bei Bedarf speichern

Basierend auf dem hier beschriebenen, nochmal eine Variante die ein paar mehr Möglichkeiten bietet.

XAML:


Herkömmliche Variante:

ImageIpCam.Source =
new BitmapImage(new Uri("http://www.it4zwigge.de/images/logo.jpg"));

Felder:

...
private WebClient _webClient;
private BitmapImage _currentImage;
...

Konstruktor:

...
_currentImage = new BitmapImage();
_webClient = new WebClient();
_webClient.OpenReadCompleted +=
new OpenReadCompletedEventHandler(_webClient_OpenReadCompleted);
...

Methode 1 - Image asynchron herunterladen und einem Image-Control zuweisen:

private void _webClient_OpenReadCompleted(object sender,
                                          OpenReadCompletedEventArgs e)
{
  if (e.Error == null && !e.Cancelled)
  {
    try
    {
      _currentImage.SetSource(e.Result);
      ImageIpCam.Source = _currentImage;
    }
    catch {}
  }
}

Methode 2 - Image bei Bedarf speichern:

private void SaveImage(string imageToSave)
{
  try
  {
    String tempImage = "TempImage";
    var myStore = IsolatedStorageFile.GetUserStoreForApplication();
    if (myStore.FileExists(tempImage))
    {
      myStore.DeleteFile(tempImage);
    }
    IsolatedStorageFileStream myFileStream = myStore.CreateFile(tempImage);

    WriteableBitmap wb = new WriteableBitmap(_currentImage);
    wb.SaveJpeg(myFileStream, wb.PixelWidth, wb.PixelHeight, 0, 85);
    myFileStream.Close();

    myFileStream = myStore.OpenFile(tempImage, FileMode.Open, FileAccess.Read);
    MediaLibrary mediaLibrary = new MediaLibrary();
    mediaLibrary.SavePicture(imageToSave, myFileStream);
    myFileStream.Close();

    MessageBox.Show("Das Bild liegt jetzt im Album \"Gespeicherte Bilder\".");
  }
  catch (Exception ex)
  {
    MessageBox.Show("Fehler beim Speichern! " + ex.Message);
  }
}

Keine Kommentare:

Kommentar veröffentlichen