Comment enregistrer BitmapImage WinRT

J’ai BitmapImage:

BitmapImage image = new BitmapImage(); image.SetSource(memStream); 

Je veux enregistrer l’image sur le disque pour voir à l’avenir. Je n’arrive pas à trouver un exemple de travail montrant comment faire cela? La deuxième question J’ai besoin d’obtenir la couleur d’un pixel (comme: Color cl=image.GetColorPixel(X,Y) ), comment puis-je faire cela? Je vous remercie!

Voici un code que j’ai trouvé il y a quelque temps sur le Web. Je ne suis pas sûr, mais si je me souviens bien, c’était à partir des exemples de sdk ou d’un blog gagnant.

Tout se résume à l’image WritabelBitmap (comme l’autre déjà affichée), créez un décodeur et transmettez-le au stream.

  ///  /// ///  ///  ///  ///  ///  public static async Task SaveToFile( this WriteableBitmap writeableBitmap, IStorageFile outputFile, Guid encoderId) { try { Stream stream = writeableBitmap.PixelBuffer.AsStream(); byte[] pixels = new byte[(uint)stream.Length]; await stream.ReadAsync(pixels, 0, pixels.Length); using (var writeStream = await outputFile.OpenAsync(FileAccessMode.ReadWrite)) { var encoder = await BitmapEncoder.CreateAsync(encoderId, writeStream); encoder.SetPixelData( BitmapPixelFormat.Bgra8, BitmapAlphaMode.Premultiplied, (uint)writeableBitmap.PixelWidth, (uint)writeableBitmap.PixelHeight, 96, 96, pixels); await encoder.FlushAsync(); using (var outputStream = writeStream.GetOutputStreamAt(0)) { await outputStream.FlushAsync(); } } } catch (Exception ex) { ssortingng s = ex.ToSsortingng(); } } 

Vous pouvez enregistrer BitmapImage de la manière suivante.

 Windows.Storage.StorageFolder localFolder = Windows.Storage.ApplicationData.Current.LocalFolder; StorageFile sampleFile = await localFolder.CreateFileAsync("image.png"); await FileIO.WriteBytesAsync(sampleFile, bytes); 

image.png sera enregistré dans le dossier LocalFolder de l’application.

J’espère que ça aide!

  • Binaya Raj Shrestha

Vous ne pouvez pas enregistrer ou modifier une image BitmapImage . Vous devez plutôt utiliser un WriteableBitmap . Si vous n’avez vraiment pas d’autre choix que de commencer par une BitmapImage, vérifiez que sa propriété UriSource télécharge à nouveau la même image ou chargez un WriteableBitmap avec le même contenu que BitmapImage départ. Notez que UriSource peut être nul dans certains cas – même si BitmapImage été chargé en lui atsortingbuant un URI – il peut être réinitialisé manuellement ou en définissant CacheMode sur BitmapCache sur une Image utilisant BitmapImage tant que Source .

regardez ce lien. il y a un extrait montrant une manipulation de WriteableBitmap http://msdn.microsoft.com/en-us/library/windows/apps/windows.ui.xaml.media.imaging.writeablebitmap.aspx

L’exemple est en lecture mais écrire ne devrait pas être difficile.

Pour parcourir les pixels, jetez un coup d’œil à PixelData Property.

Si vous essayez de prendre un élément d’interface utilisateur de votre xaml et de l’enregistrer en tant qu’image, vous aurez de la chance. Dans wpf, il existe une méthode sur un bitmap en écriture qui prend un élément UIelement en tant que paramètre, mais qui n’existe pas dans les applications Windows Store.

Vous pouvez utiliser DirectX, mais cette approche est très compliquée. La plupart des applications de dessin du magasin utilisent JavaScript car il est beaucoup plus facile de sauvegarder.