Pregunta

¿Cómo puede un WriteableBitmap de Silverlight se guardará en el sistema de archivos, no estoy seguro de qué hacer con el FileStream para hacer este trabajo, puede ser en Bitmap, PNG, JPEG, etc, siempre y cuando una biblioteca comercial no es requerido.
¿Es posible hacer esto?

Esta es mi llamada a SaveDialog, a continuación:

    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

Editar

Alta mención WritableBitmap ya que esto es lo que mi XAML está escribiendo, acabo de necesidad Para guardarlo, hay una propiedad WriteableBitmap.Pixels que es una matriz de 1-dimensional de píxeles enteros, puede esto ser puesto en un filestream, y si es así, ¿cómo?


Aquí hay un código ejemplo tengo que escribe el flujo de píxeles a una Archivo, sin embargo, esto funciona no "bitmapify" los datos y la salida resultante es inútil, sino que está escribiendo mi flujo de imagen, sólo necesidad de saber cómo marcar-it-up por lo que es un archivo de mapa de bits (o cualquier otra cosa). He encontrado los ejemplos JPEG y PNG antes, pero ninguno de ellos explicar bien cómo funcionan, puede que tenga que utilizar el método PNGEncoding ya que este es el único que va a integrar en mi base de código. Pero, ¿existe una versión simple archivo BMP por ahí?

        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
¿Fue útil?

Solución

Hay varios codificadores de código abierto por ahí:

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

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

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

Se puede utilizar cualquiera de ellos para codificar varios formatos. Aquí hay un post en el ahorro de un WriteableBitmap una vez que se cuece:

http://community.irritatedvowel.com/blogs/pete_browns_blog/archive/2009/03/18/Silverlight-3- 1320 : el mapa de bits-API- 2F00 -WriteableBitmap.aspx

ACTUALIZACIÓN: Después de hacer algunas más búsqueda que parece guardar un WriteableBitmap a un archivo está limitada en SL3 debido a cuestiones de seguridad. Hay una solución:

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

Parece que tienes para guardar el contenido de un lienzo en un archivo. Usted debe ser capaz de modificar la muestra para salvar JPEG o de otros formatos.

Otros consejos

He escrito anteriormente este post que pasa por cómo ahorrar XAML a un mapa de bits utilizando un mapa de bits se puede escribir, el cuadro de diálogo y FJCore Guardar.

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top