1

wp7 のアプリケーションがあります。Byte 配列から BitmapImage を取得する必要があります。私はそうします:

using (MemoryStream stream = new MemoryStream(rawImageBytes))

                {               
                    BitmapImage imageSource1 = new BitmapImage();
                    imageSource1.CreateOptions = BitmapCreateOptions.None;
                    imageSource1.SetSource(stream);
                }

実行後、文字列でimageSource1.SetSource(stream); エラーがあります ここに画像の説明を入力

4

3 に答える 3

0

私は問題なくこれを数回行っています。おそらく、 rawImageBytes にヘッダー情報がないためです。rawImageBytes を使用するには、WritableBitmap を使用する必要があります。WriteableBitmapExtension http://writeablebitmapex.codeplex.com/releases/view/39577をお勧めします

wr = New WriteableBitmap(New Io.MemoryStream(rawImageBytes)) 

また、基本に関する興味深い投稿: http://www.windowsphonegeek.com/articles/encode-and-decode-images-in-wp7

于 2012-11-23T12:48:01.297 に答える
0

ジェイの答えは正しいと思います。

using ステートメントにより、Dispose() メソッドが MemoryStream で呼び出されます。これは、MemoryStream 参照をクリーンアップする前に何らかの処理を行う必要があることをガベージ コレクターに通知します。そのため、オブジェクトが完全に削除される前に、ガベージ コレクターの Collect を 2 回実行する必要があります。

問題が常に発生しない理由は、ガベージ コレクターがまだ実行されていない限り、MemoryStream に引き続きアクセスできるためです。ただし、GC が実行されるとすぐに、MemoryStream 参照は使用できない状態になります。

于 2014-06-20T13:53:38.300 に答える