0

問題はメソッドTexture2D.SaveAsPngにあります。私は最近、同様の問題でこのメソッドのメモリリークを発見しましたが、なんとか解決しました。しかし、私はその解決策をここに当てはめることはできません。私が今試しているのは:

        MediaLibrary library = new MediaLibrary();
        MemoryStream ms = new MemoryStream();
        pic.SaveAsJpeg(ms, pic.Width, pic.Height);
        ms.Seek(0, SeekOrigin.Begin);
        library.SavePicture(path, ms);
        ms.Close();

また、呼び出しごとに約 4 MB のメモリ (テクスチャ ディメンション 800x620) が失われます。MemoryStreamバイト配列から作成しようとしましたが、Value does not fall within the expected range例外がスローされます。

        byte[] textureData = new byte[4 * picHeight * picWidth];
        pic.GetData(textureData);
        library.SavePicture(path, textureData); //exception on this line

Texture2Dしたがって、例外がスローされないようにバイト配列に変換する必要があると思いlibrary.SavePicture(path, ms)ますが、その方法がわかりません。どんな助けでも大歓迎です。

注:でのメモリ リークはTexture2D.SaveAsJpeg、Windows Phone 7 でのみ発生します。

Upd:バイト配列 from から作成されるメモリ ストリームの長さTexture.GetDataは 1984000 ですが、メモリ ストリーム from の長さ Texture2D.SaveAsJpegは 141520 です。

4

1 に答える 1