Domanda

Come può un WriteableBitmap da Silverlight essere salvato nel file system, non sono sicuro che cosa fare con il FileStream per fare questo lavoro, può essere in Bitmap, PNG, JPEG, ecc, fino a quando una libreria commerciale non è richiesto.
E 'possibile fare questo?

Ecco la mia chiamata a SaveDialog, qui di seguito:

    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

Modifica

Aggiunta menzione di WritableBitmap come questo è ciò che il mio XAML sta scrivendo, ho solo bisogno per salvarla, c'è una proprietà WriteableBitmap.Pixels che è una matrice 1-dimensionale di pixel interi, questo può essere messo in un FileStream, e se sì, come?


Ecco qualche esempio di codice che ho che scrive la Corrente del Pixel ad una File, tuttavia questo funziona non "bitmapify" i dati e la output risultante è inutile, ma sta scrivendo il mio flusso di immagini, ho solo bisogno di sapere come segnare-it-up in modo che sia un file bitmap (o qualsiasi altra cosa). Ho trovato gli esempi JPEG e PNG prima, ma nessuno di loro spiegare bene come funzionano, che potrebbe essere necessario utilizzare il metodo PNGEncoding in quanto questo è l'unico che si integrerà nel mio codice di base. Ma c'è una semplice versione del file BMP là fuori?

        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
È stato utile?

Soluzione

Ci sono più encoder open-source là fuori:

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

PNG Encoder di Joe Stegman: http://blogs.msdn.com/jstegman/archive/2008/04/21/dynamic-image-generation-in-silverlight.aspx

FreeImage: http://freeimage.sourceforge.net/

È possibile utilizzare qualsiasi di questi per codificare diversi formati. Ecco un post sul salvataggio di un WriteableBitmap una volta che è cotto:

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

UPDATE: Dopo aver fatto un po 'di ricerca sembra che il salvataggio di un WriteableBitmap in un file è limitata a SL3 a causa di problemi di sicurezza. C'è una soluzione:

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

Sembra che è necessario salvare il contenuto di una tela di canapa in un file. Si dovrebbe essere in grado di modificare l'esempio per salvare JPEG o altri formati.

Altri suggerimenti

Ho già scritto questo post che passa attraverso come salvare XAML a una bitmap utilizzando una bitmap scrivibile, la finestra di dialogo e salvare FJCore.

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top