Swift iOS,想知道是否有人能解释为什么输出旋转到正确的角度?

Swift iOS,想知道是否有人能解释为什么输出旋转到正确的角度?,ios,swift,uiimageorientation,Ios,Swift,Uiimageorientation,我在这里跟随这个链接,不管出于什么原因,UIImageOrientation被向左旋转了90度。我试图通过将方向设置为“向上”来纠正这个问题,但它看起来仍然是一样的。有人知道这是为什么吗?我不确定是图像、预览层还是图像视图导致了这种情况 代码如下: import UIKit import AVFoundation import CoreMedia let noirFilter = CIFilter(name: "CIPhotoEffectNoir")! let sep

我在这里跟随这个链接,不管出于什么原因,UIImageOrientation被向左旋转了90度。我试图通过将方向设置为“向上”来纠正这个问题,但它看起来仍然是一样的。有人知道这是为什么吗?我不确定是图像、预览层还是图像视图导致了这种情况

代码如下:

import UIKit
import AVFoundation
import CoreMedia



     let noirFilter = CIFilter(name: "CIPhotoEffectNoir")!

     let sepiaFilter = CIFilter(name: "CISepiaTone")!

     let vignetteEffect = CIFilter(name: "CIVignetteEffect")!



     let Filters = [noirFilter,sepiaFilter,vignetteEffect]




    class TestViewController:UIViewController,AVCaptureVideoDataOutputSampleBufferDelegate {

        @IBOutlet weak var imageView: UIImageView!
        @IBOutlet weak var Photo: UIButton!
        var sessionQueue: dispatch_queue_t!
        var stillImageOutput: AVCaptureStillImageOutput?
        var videoDeviceInput: AVCaptureDeviceInput?

        var buttonTapped = false

        override func viewDidLoad() {
            super.viewDidLoad()




           sessionQueue = dispatch_queue_create("com.bradleymackey.Backchat.sessionQueue",DISPATCH_QUEUE_SERIAL)


            let captureSession = AVCaptureSession()
            captureSession.sessionPreset = AVCaptureSessionPresetPhoto

            let backCamera = AVCaptureDevice.defaultDeviceWithMediaType(AVMediaTypeVideo)
            var videoDeviceInput: AVCaptureVideoDeviceInput?

            do
            {
                let input = try AVCaptureDeviceInput(device: backCamera)

                captureSession.addInput(input)
                 self.videoDeviceInput = videoDeviceInput
            }
            catch
            {
                print("can't access camera")
                return
            }



            // although we don't use this, it's required to get captureOutput invoked
            let previewLayer = AVCaptureVideoPreviewLayer(session: captureSession)







            view.layer.addSublayer(previewLayer)

             imageView.contentMode = UIViewContentMode.ScaleAspectFill

            let videoOutput = AVCaptureVideoDataOutput()

            videoOutput.setSampleBufferDelegate(self, queue: dispatch_queue_create("sample buffer delegate", DISPATCH_QUEUE_SERIAL))
            if captureSession.canAddOutput(videoOutput)
            {
                captureSession.addOutput(videoOutput)
            }




            captureSession.startRunning()

            let stillImageOutput: AVCaptureStillImageOutput = AVCaptureStillImageOutput()
            if captureSession.canAddOutput(stillImageOutput) {
                stillImageOutput.outputSettings = [AVVideoCodecKey: AVVideoCodecJPEG]
                captureSession.addOutput(stillImageOutput)

                self.stillImageOutput = stillImageOutput



        }
        }

        override func viewWillLayoutSubviews() {




        }




        func captureOutput(captureOutput: AVCaptureOutput!, didOutputSampleBuffer sampleBuffer: CMSampleBuffer!, fromConnection connection: AVCaptureConnection!)
        {
             let filter = Filters[1]



            let pixelBuffer = CMSampleBufferGetImageBuffer(sampleBuffer)
            let cameraImage = CIImage(CVPixelBuffer: pixelBuffer!)

            filter.setValue(cameraImage, forKey: kCIInputImageKey)

            let filteredImage = UIImage(CIImage: filter.valueForKey(kCIOutputImageKey) as! CIImage!)

            var newImage = UIImage(CIImage: filter.valueForKey(kCIOutputImageKey) as! CIImage!, scale:1.0, orientation: .Up)

            dispatch_async(dispatch_get_main_queue())
            {
                self.imageView.image = newImage
            }

        }

        @IBAction func snapStill(sender: UIButton) {
            print("snapStillImage")



            let previewController = PreviewViewController(nibName: "PreviewViewController", bundle: nil)
                        previewController.media = Media.Photo(image: imageView.image!)
                        previewController.isFrontCamera = false 

                        self.presentViewController(previewController, animated: true, completion: nil)

        }


        override func viewDidLayoutSubviews()
        {




        }


        override func didReceiveMemoryWarning() {
            super.didReceiveMemoryWarning()
            // Dispose of any resources that can be recreated.
        }
    }

原因是没有设置方向。 您需要在captureOutput()中设置方向


这应该可以解决您的问题。

原因是没有设置方向。 您需要在captureOutput()中设置方向


这应该可以解决您的问题。

请发布您的代码,以便我们可以看到您正在使用的代码。@Screerspeak我已经添加了代码。请发布您的代码,以便我们可以看到您正在使用的代码。@Screerspeak我已经添加了代码
func captureOutput(captureOutput: AVCaptureOutput!, didOutputSampleBuffer sampleBuffer: CMSampleBuffer!, fromConnection connection: AVCaptureConnection!) 
{
connection.videoOrientation = .portrait
...