Как сэкономить растровов / writeablebitmap с помощью SaveFileDialog в Silverlight 3.0?

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

Вопрос

Как можно сохранить writeablebitmap от silverlight в файловой системе, я не уверен, что делать с FileStream, чтобы сделать эту работу, это может быть в растровом карте, PNG, JPEG FORMAT и т. Д., Поскольку коммерческая библиотека не требуется.
Можно ли сделать это?

Вот мой призыв к Savedialog, ниже:

    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

Редактировать

Добавлено упоминание о записи writebitmap, так как это то, к чему пишет мой XAML, мне просто нужно сохранить его, есть свойство PriseableBitmap.pixels, которое представляет собой одномерное массив целочисленных пикселей, можно вставить в FileStream, и если это так , как?


Вот какой-то пример кода, который у меня есть, который записывает поток пикселей в файл, однако это работает, он не «не" растворает "данные, и полученный вывод бесполезен, но он пишет мой поток изображений, мне просто нужно знать, как отметить Это так, чтобы это был растровый файл (или что-нибудь еще). Я уже обнаружил примеры JPEG и PNG, но никто из них не объясняет, как они работают, мне, возможно, придется использовать метод PNGencoDing, так как это единственный, который будет интегрироваться в мою кодовую базу. Но есть ли простая версия файла BMP?

        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
Это было полезно?

Решение

Есть несколько кодеров с открытым исходным кодом:

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

Кодер PNG Джо Стегмана: http://blogs.msdn.com/jstegman/archive/2008/04/21/dynamic-image-generation-in-silverlight.aspx

Freeimage: http://freeimage.sourceforge.net/

Вы можете использовать любой из них, чтобы кодировать различные форматы. Вот пост о сохранении писательской карты, как только он запечен:

http://community.irritatedvowel.com/blogs/pete_browns_blog/archive/2009/03/18/silverlight-3-1320--Bitmap-api-2F00-Вритритбитмап.aspx

Обновление: после некоторого поиска, он выглядит так, как сохранение writeablebitmap в файл ограничена в SL3 из -за проблем безопасности. Есть обходной путь:

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

Похоже, вы должны сохранить содержимое холста в файл. Вы должны иметь возможность изменить образец для сохранения JPEG или других форматов.

Другие советы

Ранее я писал этот пост, который проходит через то, как сохранить XAML на растровом карте, используя писательную растровую карту, диалоговое окно «Сохранить» и FJCore.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top