2016-03-05 62 views
3

使用sdk 3,当我渲染一张从Windows 10手机拍摄的肖像照片时,它看起来被拉伸的方向不对。 如何解决它? 是Os bug还是Sdk bug?肖像图片方向错误?

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

sample

+0

问题接缝为GPU,使用RenderOptions.Cpu显示良好图像。但不幸的是,我的目标是使用Gpu着色器... – yannis

+0

你有没有这个运气? –

+1

@EricLiprandi我使用cpu选项来获取更小的图片,然后使用Gpu – yannis

回答

1

这是真的,似乎是在的Lumia成像SDK的错误,当谈到EXIF方向和渲染GPU上。

这就是说,有一个简单的解决方法。当您首次从StorageFile加载IImageProvider时,请制作一个temporray位图并将其用作其他渲染操作的源代码。这样,在最有限的可能情况下,您只会采取一次仅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); 
    } 
}