使用 sdk 3,当我渲染从 Windows 10 移动设备拍摄的肖像图片时,它会出现拉伸方向错误。如何解决?是 OS 错误还是 Sdk 错误?
m_image = new Lumia.Imaging.StorageFileImageSource(file);
m_renderer = new SwapChainPanelRenderer(m_image, panel);
await m_renderer.RenderAsync();
使用 sdk 3,当我渲染从 Windows 10 移动设备拍摄的肖像图片时,它会出现拉伸方向错误。如何解决?是 OS 错误还是 Sdk 错误?
m_image = new Lumia.Imaging.StorageFileImageSource(file);
m_renderer = new SwapChainPanelRenderer(m_image, panel);
await m_renderer.RenderAsync();
确实,Lumia Imaging SDK 中似乎存在一个错误,涉及 EXIF 方向和 GPU 上的渲染。
也就是说,有一个简单的解决方法。当您第一次从 StorageFile 加载 IImageProvider 时,制作一个临时位图并将其用作其他渲染操作中的源。这样,在最有限的可能情况下,您只会受到一次仅 CPU 渲染操作的惩罚。您的所有其他渲染操作都将获得最佳 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);
}
}