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