我正在使用Lumia Imaging SDK v2在我的应用程序中压缩和裁剪图像。最近,我们遇到了一个与.wdp格式图像的压缩和裁剪相关的问题;JpegRenderer.RenderAsync()使用该特定格式类型时会反复崩溃。
为了解决这个问题,我们升级到了SDK v3,但在应用程序的内存分析中,我发现SDK v3的内存使用率比SDK v2高得多(见附件截图)。
SDK v2内存分析:

SDK v3内存分析:

v2的峰值在55 MB处最大,而v3的峰值在> 160 MB处。在v2中,我使用StorageFileImageSource将图像加载到内存中。在v3中,我使用BifferImageSource来做同样的事情。我还使用using语句来处理实现IDisposable的数据类型。
为什么在v3中观察到这种内存膨胀?有什么办法可以避免吗?另外,有没有办法在v2中渲染.wdp格式的图像呢?
发布于 2016-01-07 03:10:46
Lumia Imaging SDK 3.0在GPU上处理时使用比2.x更多的内存(2.x上仅存在CPU处理)。这里的不同之处在于,CPU将同时处理整个图像,因此不使用平铺-至少不是RAJPEG意义上的平铺,因此您将同时需要内存中的整个图像资源。
若要获得2.x级别的内存性能,可以在渲染时设置仅CPU渲染。请注意,这也将禁用GPU带来的性能提升。
看一看Renderer.RenderOptions属性。在本例中将其设置为RenderOptions.OnlyCPU。
我强烈建议阅读所有关于更改RenderOptions的文档,因为它有一些不明显的副作用。
https://stackoverflow.com/questions/34631668
复制相似问题