vb.net - 如何在 Silverlight 3.0 中使用 SaveFileDialog 保存 BitmapImage/WriteableBitmap?

标签 vb.net silverlight stream bitmapimage

如何将来自 Silverlight 的 WriteableBitmap 保存到文件系统中,我不确定如何使用 FileStream 来完成这项工作,它可以是位图、PNG、Jpeg 格式等,只要商业图书馆不是必填。
可以这样做吗?

下面是我对 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

编辑

添加了对 WritableBitmap 的提及,因为这是我的 XAML 正在写入的内容,我只需要 要保存它,有一个 WriteableBitmap.Pixels 属性,它是一维整数像素数组,可以将其放入文件流中吗?如果可以,如何?


这是我的一些示例代码,可以将像素流写入 文件,但是它不会“位图化”数据和 结果输出是无用的,但它正在写入我的图像流,我只是 需要知道如何对其进行标记,使其成为位图文件(或其他任何文件)。 我以前找到过 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/

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

免费图片: http://freeimage.sourceforge.net/

您可以使用其中任何一种来编码各种格式。这是一篇关于在烘焙后保存 WriteableBitmap 的帖子:

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

更新: 在进行更多搜索后,由于安全问题,将 WriteableBitmap 保存到文件似乎在 SL3 中受到限制。有一个解决方法:

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

看起来您必须将 Canvas 的内容保存到文件中。您应该能够修改示例以保存 JPEG 或其他格式。

关于vb.net - 如何在 Silverlight 3.0 中使用 SaveFileDialog 保存 BitmapImage/WriteableBitmap?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1394109/

相关文章:

.net - 如何在 .NET 中修剪数组?

java - 为什么我在此循环中收到 java.io.IOException?

c# - 如何播放音频流并同时加载到其中?

c# - .NET 中是否有一些流 "pipe"类?

regex - 使用 Regex 和 VB.NET 将字符串拆分为多个空格

c# - DataGridView:查找 ColumnHeaders 是否真的可见

vb.net - 局部变量 : Pascal or Camel Casing?

wpf - 我们更需要什么样的编译器魔法?

silverlight - XAP 半天后过期?

silverlight - MVVM-具有导航和可混合性的主/详细方案