2016-01-06 10 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 MB, но в v3 пики достигают > 160 MB. В v2 Я использовал StorageFileImageSource, чтобы загрузить изображения в память. В v3 я использую BifferImageSource, чтобы сделать то же самое. Я также использую операторы using, чтобы избавиться от типов данных, реализующих IDisposable.

Любые причины, по которым этот всплеск памяти наблюден в v3? В любом случае я могу избежать этого? Кроме того, есть ли способ визуализации изображений .wdp в v2 сам?

ответ

3

Lumia Imaging SDK 3.0 использует больше памяти, чем 2.x при обработке на графическом процессоре (только обработка процессора на 2.x). Разница здесь объясняется тем, что процессор обрабатывает все изображение одновременно, поэтому не используйте тайлинг - по крайней мере, не в смысле RAJPEG, поэтому вам понадобятся все ресурсы изображения в памяти одновременно.

Для достижения уровня производительности памяти 2.x вы можете установить рендеринг только для вашего рендера. Обратите внимание, что это также отключит повышение производительности, которое приносит GPU.

Посмотрите на свойство [Renderer] .RenderOptions. В этом случае установите RenderOptions.OnlyCPU.

Я настоятельно рекомендую прочитать все документы об изменении RenderOptions, поскольку это связано с некоторыми неочевидными побочными эффектами.

 Смежные вопросы

  • Нет связанных вопросов^_^