Comment sauver BitmapImage / WriteableBitmap en utilisant SaveFileDialog dans Silverlight 3.0?

StackOverflow https://stackoverflow.com/questions/1394109

Question

Comment un WriteableBitmap de Silverlight être enregistrées sur le système de fichiers, je ne suis pas sûr de quoi faire avec le FileStream pour faire ce travail, il peut être dans Bitmap, PNG, Jpeg etc, aussi longtemps qu'une bibliothèque commerciale n'est pas nécessaire.
Est-il possible de le faire?

Voici mon appel à SaveDialog, ci-dessous:

    Dim SaveDialog As New SaveFileDialog
    If SaveDialog.ShowDialog Then
        Try
            Using FileStream As Stream = SaveDialog.OpenFile
               ' Save Image File Code Here
            End Using
        Catch ex As Exception

        End Try
    End If

Modifier

mention ajoutée de WritableBitmap que c'est ce que mon XAML est en train d'écrire, je dois juste pour le sauver, il y a une propriété WriteableBitmap.Pixels qui est un tableau 1 dimensions de pixels entiers, ceci peut être mis en filestream, et si oui, comment?


Voici quelques exemples de code j'écrit que le flux de pixels à un Fichier, mais cela fonctionne, il n'a pas « bitmapify » les données et la sortie résultante est inutile, mais il est en train d'écrire mon flux d'images, je viens besoin de savoir comment marquer-it-up de sorte qu'il est un fichier Bitmap (ou autre). J'ai trouvé les exemples JPEG et PNG avant, mais aucun d'entre eux bien expliquer comment ils fonctionnent, je dois utiliser la méthode PNGEncoding comme cela est le seul qui intégrera dans mon code de base. Mais est-il une version simple de fichier BMP là-bas?

        Dim Image As Imaging.WriteableBitmap = _Style.Image
        Dim Area As Integer = Image.PixelWidth * Image.PixelHeight
        For Raster As Integer = 0 To Area - 1
            Dim Pixel As Integer = Image.Pixels(Raster)
            Dim Bytes() = BitConverter.GetBytes(Pixel And &HFF)
            FileStream.Write(Bytes, 0, 4)
        Next
Était-ce utile?

La solution

Il y a plusieurs codeurs open-source là-bas:

FJCore: http://code.google.com/p/fjcore/

PNG Joe Stegman encodeur: http://freeimage.sourceforge.net/

Vous pouvez utiliser l'un de ces formats pour encoder différents. Voici un post sur l'enregistrement d'une WriteableBitmap une fois qu'il est cuit:

http://community.irritatedvowel.com/blogs/pete_browns_blog/archive/2009/03/18/Silverlight-3- 1320 -La-Bitmap-API- 2F00 -WriteableBitmap.aspx

Mise à jour: Après avoir fait un peu plus de recherche, il ressemble à l'enregistrement d'une WriteableBitmap dans un fichier est limité dans SL3 en raison de problèmes de sécurité. Il existe une solution:

http://geekswithblogs.net/braulio/archive/2009/07/12/export-canvas-to-png-and-save-it-in-your-local.aspx

On dirait que vous devez enregistrer le contenu d'une toile dans un fichier. Vous devriez être en mesure de modifier l'échantillon pour enregistrer une image JPEG ou d'autres formats.

Autres conseils

Je l'ai déjà écrit ce post qui passe par la façon de sauver XAML à un bitmap à l'aide d'un bitmap inscriptible, la boîte de dialogue Enregistrer et FJCore.

http://blog.blueboxes.co.uk/2009/07/21/rendering-xaml-to-a-jpeg-using-silverlight-3/

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top