3

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

編集

これは私の XAML が書き込んでいるものであるため、WritableBitmap についての言及を追加しました。保存する必要があるだけです。整数ピクセルの 1 次元配列である 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
4

2 に答える 2

2

オープンソースのエンコーダーがいくつかあります。

FJコア: 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 またはその他の形式で保存できるはずです。

于 2009-09-08T14:53:53.493 に答える
1

以前、書き込み可能なビットマップ、保存ダイアログボックス、およびFJCoreを使用してXAMLをビットマップに保存する方法について説明したこの投稿を作成しました。

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

于 2009-09-13T15:58:32.830 に答える