簡體   English   中英

如何正確地將Texture2D保存到MediaLibrary wp7

[英]How correctly to save texture2d to MediaLibrary wp7

問題出在方法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();

而且,每次通話我都會丟失大約4mb的內存(紋理尺寸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:從字節數組從創建的存儲器流長度Texture.GetData是1984000,當從存儲器流的長度Texture2D.SaveAsJpeg是141520。

我不明白為什么您將紋理pic數據復制到textureData但從未使用過。
也許您需要做:

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

更新

根據MSDN的MediaLibrary.SavePicture

傳入的圖像數據必須為JPEG文件格式。 此外,SavePicture始終將圖像保存為JPEG文件格式。

Texture2D.GetData獲得的byte[]似乎不是這種格式,但是我不知道如何轉換它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM