2016-03-05 11 views
3

Использование sdk 3, Когда я снимаю портретный снимок, сделанный с мобильного телефона Windows 10 , он выглядит растянутым с неправильной ориентацией. Как это исправить? Это ошибка Os или ошибка Sdk?Портретная ошибка ориентации изображения?

 m_image = new Lumia.Imaging.StorageFileImageSource(file); 
     m_renderer = new SwapChainPanelRenderer(m_image, panel); 
     await m_renderer.RenderAsync(); 

sample

+0

Проблемы швов быть видеочип, используя RenderOptions.Cpu показать хорошую картину. Но, к сожалению, моя цель - использовать Gpu shader ... – yannis

+0

вам повезло с этим? –

+1

@EricLiprandi Я использую опцию cpu для получения меньшего изображения, затем используйте Gpu – yannis

ответ

1

Это правда, там, кажется, ошибка в Lumia изображений SDK, когда дело доходит до EXIF ​​ориентации и рендеринга на GPU.

Это очень простой способ обхода проблемы. Когда вы сначала загружаете IImageProvider из StorageFile, создавайте временное растровое изображение и используйте это как источник в других ваших операциях рендеринга. Таким образом, вы будете выполнять только операцию рендеринга только с процессором один раз в наиболее ограниченном сценарии. Все ваши другие операции рендеринга будут оптимально ускорены.

Вот вспомогательный метод для использования при использовании StorageFile в качестве источника:

public static async Task<IImageProvider> CreateImageSourceFromFile(StorageFile file) 
{ 
    using (var source = new StorageFileImageSource(file)) 
    using (var renderer = new BitmapRenderer(source) { RenderOptions = RenderOptions.Cpu }) 
    { 
     var bitmap = await renderer.RenderAsync(); 
     return new BitmapImageSource(bitmap); 
    } 
} 

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

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