Ошибка ориентации портретной картинки?

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

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

образец

1 ответ

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

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

Вот вспомогательный метод для использования при использовании 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);
    }
}
Другие вопросы по тегам