1

我正在使用 Lumia Imaging SDKv2在我的应用程序中压缩和裁剪图像。最近我们遇到了一个与.wdp格式图像的压缩和裁剪有关的问题;JpegRenderer.RenderAsync()使用该特定格式类型反复崩溃。

为了解决这个问题,我们升级到了 SDK v3,但是在应用程序的内存分析中,我发现 SDK 中的内存使用率v3比 SDK 高得多v2(见附件截图)。

SDK v2 内存分析: SDK v2 内存分析

SDK v3 内存分析: SDK v3 内存分析

v2最大的峰在55 MB但在v3峰中达到> 160 MB。在v2我曾经StorageFileImageSource将图像加载到内存中。在v3BifferImageSource过去也这样做。我还使用using语句来处理实现IDisposable.

观察到这种内存膨胀的任何原因v3?有什么办法可以避免吗?另外,有没有办法自己渲染.wdp格式图像v2

4

1 回答 1

3

在 GPU 上处理时 Lumia Imaging SDK 3.0 使用的内存比 2.x 多(2.x 上仅存在 CPU 处理)。这里的不同之处在于 CPU 将同时处理整个图像,所以不要使用平铺 - 至少不是 RAJPEG 意义上的,所以你需要同时在内存中的整个图像资源。

要实现 2.x 级别的内存性能,您可以在渲染上设置仅 CPU 渲染。请注意,这也会禁用 GPU 带来的性能提升。

看看 [Renderer].RenderOptions 属性。在这种情况下,将其设置为 RenderOptions.OnlyCPU。

我强烈建议阅读所有有关更改 RenderOptions 的文档,因为它带有一些不明显的副作用。

于 2016-01-06T19:10:46.083 回答