Ошибка ориентации портретной картинки?
Используя 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);
}
}