[英]how to detect IOS device Orientation when using camera
所以 - 我有一個使用 AVCaptureSession 拍照的應用程序。 我有一個 AVCapturePhoto - 我想以正確的方向結束一個 uiImage,這似乎很難做到。 在肖像中,我目前正在執行以下操作來糾正方向:
UIImage toImage( AVCapturePhoto photo )
{
return new UIImage(photo.CGImageRepresentation, 1, UIImageOrientation.Right);
}
效果很好 - 但是,我找不到任何方法來檢測手機是否橫向放置。 例如,假設您將方向鎖定到縱向 - 我查詢的所有內容,例如相機,設備當前方向 - UIApplication 共享狀態欄方向,或其他任何 - 返回縱向 - 但顯然圖片實際上變成了橫向圖像。 我看過其他答案,說使用“UIdevce.current.orientation” - 但對我來說總是“未知”。
無論如何知道相機的方向,無論方向鎖定如何,或者以始終為正確方向的 UIImage 出現 - 即匹配現實世界?
好的 - 所以我找到了一種方法來做到這一點 - 讀取加速度計 - 這似乎有效:
UIAccelerometer.SharedAccelerometer.Acceleration += SharedAccelerometer_Acceleration;
...
private void SharedAccelerometer_Acceleration(object sender, UIAccelerometerEventArgs e)
{
var roundedX = Math.Round(e.Acceleration.X);
var roundedY = Math.Round(e.Acceleration.Y);
UIImageOrientation orientation;
if (Math.Abs(roundedX) < Math.Abs(roundedY))
orientation = (roundedY == -1) ? UIImageOrientation.Right : UIImageOrientation.Left;
else
orientation = (roundedX == -1) ? UIImageOrientation.Down : UIImageOrientation.Up ;
_currentOrientation = orientation;
}
...
return new UIImage(photo.CGImageRepresentation, 1, _currentOrientation);
然而,這不可能是“正確”的方式——這真的讓我感到驚訝,這很難——似乎人們 100% 都希望從相機中出來的東西與現實世界中的東西相匹配? 仍然會喜歡有人告訴我正確的做法!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.