2016-01-06 47 views
1

我使用Lumia Imaging SDK v2在我的應用程序中壓縮和裁剪圖像。最近我們遇到了與壓縮和裁剪.wdp格式圖像有關的問題; JpegRenderer.RenderAsync()重複使用該特定格式類型崩潰。Lumia Imaging SDK v3內存問題

要解決這個問題,我們升級到SDK v3,但對應用程序的內存分析,我發現在SDK v3內存使用比SDK v2(見附件截屏)要高得多。

SDK V2內存分析: SDK v2 memory profiling

SDK V3內存分析: SDK v3 memory profiling

v2最大的峯列於55 MBv3峯值達到> 160 MB。 在v2我用StorageFileImageSource將圖像加載到內存中。在v3我使用BifferImageSource來做同樣的事情。我還使用using語句來處理實現IDisposable的數據類型。

爲什麼這種記憶力膨脹的原因是在v3?任何方式,我可以避免它?另外,有沒有什麼辦法在v2本身呈現.wdp格式的圖像?

回答

3

Lumia Imaging SDK 3.0在GPU上處理時使用比2.x更多的內存(僅在2.x上存在CPU處理)。這裏的區別在於CPU會同時處理整個圖像,所以不要使用平鋪 - 至少不要使用RAJPEG的意義,所以您需要同時在內存中存儲整個圖像資源。

要實現2.x級的內存性能,您可以在渲染上設置僅CPU渲染。請注意,這也會禁用GPU帶來的性能提升。

查看[Renderer] .RenderOptions屬性。在這種情況下將其設置爲RenderOptions.OnlyCPU。

我強烈建議閱讀所有關於更改RenderOptions的文檔,因爲它帶有一些非明顯的副作用。