2016-03-05 53 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); 
    } 
}