簡體   English   中英

使用相機時如何檢測IOS設備方向

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM