问题出在方法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