問題出在方法Texture2D.SaveAsPng。我最近在這個方法中發現了memory leak類似的問題,但設法解決它。但我不能在這裏適應這個解決方案。我現在想要的是:如何正確保存texture2d到MediaLibrary wp7
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
內存泄漏只在窗口電話發生7.
UPD:從字節數組從Texture.GetData
創建內存流長度爲1984000,當從存儲器Texture2D.SaveAsJpeg
流的長度是141520.
錯誤的複製粘貼,對不起。我試圖通過像你所建議的字節數組,但從該字節數組創建的內存流,但它沒有工作,exeption被拋出保存線。 – Feusp
爲什麼從Texture.GetData的字節數組長度爲1984000?如果紋理是800x420不應該是1344000? – pinckerman
我再次失敗,確切尺寸800x620而不是800x420。我現在感覺有點尷尬。 – Feusp