Как сэкономить растровов / writeablebitmap с помощью SaveFileDialog в Silverlight 3.0?
-
21-09-2019 - |
Вопрос
Как можно сохранить 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/
Вы можете использовать любой из них, чтобы кодировать различные форматы. Вот пост о сохранении писательской карты, как только он запечен:
Обновление: после некоторого поиска, он выглядит так, как сохранение writeablebitmap в файл ограничена в SL3 из -за проблем безопасности. Есть обходной путь:
Похоже, вы должны сохранить содержимое холста в файл. Вы должны иметь возможность изменить образец для сохранения JPEG или других форматов.
Другие советы
Ранее я писал этот пост, который проходит через то, как сохранить XAML на растровом карте, используя писательную растровую карту, диалоговое окно «Сохранить» и FJCore.
http://blog.blueboxes.co.uk/2009/07/21/rendering-xaml-to-a-jpeg-using-silverlight-3/