標籤:
我上個隨筆講到,windows phone 拍出來的photo如果直接使用是反轉了90°的。
研究了很久。。終於發現問題。其實。。這是使用習慣問題。。。
CameraCaptureUI 得到的photo 其實是 以第2圖水平的方向為基準的。為什麼我會這樣說呢。。讓我們看一下用模擬器拍攝的photo。注意到左邊那些字沒有。
再給一個水平的,可以看的更清楚。YUY2(640x480)
說白了。。其實水平才是別人老外認為的預設視角。。但是有人說。。這樣子。。豎著拍的時候就拿到的卻會橫著顯示。。很奇怪。。不怕不怕。。其實我們找到規律。。可以對得到的流進行處理。
下面是代碼
public static async Task RotateCaptureImageByDisplayInformationAutoRotationPreferences(IRandomAccessStream inStream, IRandomAccessStream outStream) { BitmapDecoder decoder = await BitmapDecoder.CreateAsync(inStream); BitmapEncoder encoder = await BitmapEncoder.CreateForTranscodingAsync(outStream, decoder); var ort = DisplayInformation.GetForCurrentView().CurrentOrientation; Debug.WriteLine(ort); switch (ort) { //The same as Portrait case DisplayOrientations.None: encoder.BitmapTransform.Rotation = BitmapRotation.Clockwise90Degrees; break; //The default view for capture. case DisplayOrientations.Landscape: encoder.BitmapTransform.Rotation = BitmapRotation.None; break; case DisplayOrientations.Portrait: encoder.BitmapTransform.Rotation = BitmapRotation.Clockwise90Degrees; break; case DisplayOrientations.LandscapeFlipped: encoder.BitmapTransform.Rotation = BitmapRotation.Clockwise180Degrees; break; case DisplayOrientations.PortraitFlipped: encoder.BitmapTransform.Rotation = BitmapRotation.Clockwise270Degrees; break; default: break; } await encoder.FlushAsync(); }
有了它。。媽媽再也不怕。。等到的圖片是旋轉90°的了。。哈哈哈
windows phone 網路攝影機得到圖片是旋轉90°