diff --git a/SwiftProject/SwiftProject.xcworkspace/xcuserdata/aaa.xcuserdatad/UserInterfaceState.xcuserstate b/SwiftProject/SwiftProject.xcworkspace/xcuserdata/aaa.xcuserdatad/UserInterfaceState.xcuserstate index 1128009..3c06a1c 100644 Binary files a/SwiftProject/SwiftProject.xcworkspace/xcuserdata/aaa.xcuserdatad/UserInterfaceState.xcuserstate and b/SwiftProject/SwiftProject.xcworkspace/xcuserdata/aaa.xcuserdatad/UserInterfaceState.xcuserstate differ diff --git a/SwiftProject/SwiftProject.xcworkspace/xcuserdata/aaa.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist b/SwiftProject/SwiftProject.xcworkspace/xcuserdata/aaa.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist index dcc11bb..a2c2a87 100644 --- a/SwiftProject/SwiftProject.xcworkspace/xcuserdata/aaa.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist +++ b/SwiftProject/SwiftProject.xcworkspace/xcuserdata/aaa.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist @@ -14,8 +14,8 @@ filePath = "SwiftProject/Project/Controller/CCHomeController.swift" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" - startingLineNumber = "593" - endingLineNumber = "593" + startingLineNumber = "612" + endingLineNumber = "612" landmarkName = "imagePickerController(_:didFinishPickingMediaWithInfo:)" landmarkType = "7"> @@ -30,8 +30,8 @@ filePath = "SwiftProject/Project/Controller/CCHomeController.swift" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" - startingLineNumber = "585" - endingLineNumber = "585" + startingLineNumber = "604" + endingLineNumber = "604" landmarkName = "imagePickerController(_:didFinishPickingMediaWithInfo:)" landmarkType = "7"> @@ -62,8 +62,8 @@ filePath = "SwiftProject/Project/Controller/CCHomeController.swift" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" - startingLineNumber = "549" - endingLineNumber = "549" + startingLineNumber = "568" + endingLineNumber = "568" landmarkName = "photoLibrary()" landmarkType = "7"> @@ -457,38 +457,6 @@ landmarkType = "7"> - - - - - - - - @@ -556,32 +524,80 @@ + + + + + + + + + + + + diff --git a/SwiftProject/SwiftProject.xcworkspace/xcuserdata/aaa.xcuserdatad/xcschemes/xcschememanagement.plist b/SwiftProject/SwiftProject.xcworkspace/xcuserdata/aaa.xcuserdatad/xcschemes/xcschememanagement.plist index 8e25d55..04edb5f 100644 --- a/SwiftProject/SwiftProject.xcworkspace/xcuserdata/aaa.xcuserdatad/xcschemes/xcschememanagement.plist +++ b/SwiftProject/SwiftProject.xcworkspace/xcuserdata/aaa.xcuserdatad/xcschemes/xcschememanagement.plist @@ -9,105 +9,141 @@ isShown orderHint - 1 + 36 Promises (Playground) 10.xcscheme isShown orderHint - 11 + 45 Promises (Playground) 11.xcscheme isShown orderHint - 12 + 46 Promises (Playground) 12.xcscheme isShown orderHint - 47 + 48 Promises (Playground) 13.xcscheme isShown orderHint - 48 + 49 Promises (Playground) 14.xcscheme isShown orderHint - 49 + 50 + + Promises (Playground) 15.xcscheme + + orderHint + 47 + + Promises (Playground) 16.xcscheme + + orderHint + 51 + + Promises (Playground) 17.xcscheme + + orderHint + 52 + + Promises (Playground) 18.xcscheme + + isShown + + orderHint + 53 + + Promises (Playground) 19.xcscheme + + isShown + + orderHint + 54 Promises (Playground) 2.xcscheme isShown orderHint - 2 + 37 + + Promises (Playground) 20.xcscheme + + isShown + + orderHint + 55 Promises (Playground) 3.xcscheme isShown orderHint - 3 + 38 Promises (Playground) 4.xcscheme isShown orderHint - 4 + 39 Promises (Playground) 5.xcscheme isShown orderHint - 5 + 40 Promises (Playground) 6.xcscheme isShown orderHint - 6 + 41 Promises (Playground) 7.xcscheme isShown orderHint - 7 + 42 Promises (Playground) 8.xcscheme isShown orderHint - 8 + 43 Promises (Playground) 9.xcscheme isShown orderHint - 10 + 44 Promises (Playground).xcscheme isShown orderHint - 0 + 35 diff --git a/SwiftProject/SwiftProject/Project/Controller/RecordingVideo/CCSpatialPhotoDisplayController/CCSpatialPhotoDisplayController.swift b/SwiftProject/SwiftProject/Project/Controller/RecordingVideo/CCSpatialPhotoDisplayController/CCSpatialPhotoDisplayController.swift index da960ff..23a5a35 100644 --- a/SwiftProject/SwiftProject/Project/Controller/RecordingVideo/CCSpatialPhotoDisplayController/CCSpatialPhotoDisplayController.swift +++ b/SwiftProject/SwiftProject/Project/Controller/RecordingVideo/CCSpatialPhotoDisplayController/CCSpatialPhotoDisplayController.swift @@ -546,8 +546,7 @@ class CCSpatialPhotoDisplayController: BaseController { }else if(selectedIndex == 2){//红蓝立体 var ri = joinImages_red_blue(lciImage: lciImage, rciImage: rciImage, scale: currentScale,rbImage: redBlueImage) -// var ri = UIImage(ciImage: lastImg) - ri = ri.getUpImg(imgOrigOritentation: self.imgOritentation ) +// ri = ri.getUpImg(imgOrigOritentation: self.imgOritentation ) redBlueImage = ri self.mImgView.image = ri diff --git a/SwiftProject/SwiftProject/Project/Controller/RecordingVideo/CCSpatialPhotoDisplayController/CCSpatialPhotoDisplayEx.swift b/SwiftProject/SwiftProject/Project/Controller/RecordingVideo/CCSpatialPhotoDisplayController/CCSpatialPhotoDisplayEx.swift index 5894853..08ed7fe 100644 --- a/SwiftProject/SwiftProject/Project/Controller/RecordingVideo/CCSpatialPhotoDisplayController/CCSpatialPhotoDisplayEx.swift +++ b/SwiftProject/SwiftProject/Project/Controller/RecordingVideo/CCSpatialPhotoDisplayController/CCSpatialPhotoDisplayEx.swift @@ -158,10 +158,10 @@ extension CCSpatialPhotoDisplayController { let edS = 20 //比列 var left = UIImage(ciImage: leftImage ) - left = left.getUpImg(imgOrigOritentation: imgOritentation) +// left = left.getUpImg(imgOrigOritentation: imgOritentation) var right = UIImage(ciImage: rightImage ) - right = right.getUpImg(imgOrigOritentation: imgOritentation) +// right = right.getUpImg(imgOrigOritentation: imgOritentation) //获取缩放图片 let (n_left,n_left_size) = getImgWithScale(image: left, scale: scale) diff --git a/SwiftProject/SwiftProject/Project/Controller/RecordingVideo/CCSpatialShootController/CCSpatialShootController+Generate.swift b/SwiftProject/SwiftProject/Project/Controller/RecordingVideo/CCSpatialShootController/CCSpatialShootController+Generate.swift index 66f18a5..00237e6 100644 --- a/SwiftProject/SwiftProject/Project/Controller/RecordingVideo/CCSpatialShootController/CCSpatialShootController+Generate.swift +++ b/SwiftProject/SwiftProject/Project/Controller/RecordingVideo/CCSpatialShootController/CCSpatialShootController+Generate.swift @@ -18,36 +18,40 @@ extension CCSpatialShootController: AVCaptureAudioDataOutputSampleBufferDelegate //视频、音频回调 func captureOutput(_ output: AVCaptureOutput, didOutput sampleBuffer: CMSampleBuffer, from connection: AVCaptureConnection) { - if shootingMode == .CCShootingMode_Camera && self.isTakePhoto{ + if shootingMode == .CCShootingMode_Camera { takePhotoSemaphore.wait() - print("xxsddd:\(Thread.current)") - if output == wideAngleCameraVideoDataOutput && self.isTakePhoto_wideCamera { - if let firstFrame = imageFromSampleBuffer(sampleBuffer: sampleBuffer) { - imgs.add(firstFrame) - self.isTakePhoto_wideCamera = false + if self.isTakePhoto { + print("xxsddd:\(Thread.current)") + + if output == wideAngleCameraVideoDataOutput && self.isTakePhoto_wideCamera { + if let firstFrame = imageFromSampleBuffer(sampleBuffer: sampleBuffer,orientation: connection.videoOrientation) { + imgs.add(firstFrame) + self.isTakePhoto_wideCamera = false + } + else { + print("wide Angle firstframe is lost....") + } + } else if output == ultraWideCameraVideoDataOutput && self.isTakePhoto_ultraCamera{ + if let firstFrame = imageFromSampleBuffer(sampleBuffer: sampleBuffer,orientation: connection.videoOrientation) { + imgs.add(firstFrame) + self.isTakePhoto_ultraCamera = false + } + else{ + print("ultra Wide firstFrame is lost....") + } + } + + if(imgs.count == 2){ + compositeSpatialPhoto() + imgs.removeAllObjects() + self.isTakePhoto = false + print("2张照片满足合成....") } else { - print("wide Angle firstframe is lost....") - } - } else if output == ultraWideCameraVideoDataOutput && self.isTakePhoto_ultraCamera{ - if let firstFrame = imageFromSampleBuffer(sampleBuffer: sampleBuffer) { - imgs.add(firstFrame) - self.isTakePhoto_ultraCamera = false - } - else{ - print("ultra Wide firstFrame is lost....") + print("images 少于2张....") } } - if(imgs.count == 2){ - compositeSpatialPhoto() - imgs.removeAllObjects() - self.isTakePhoto = false - print("2张照片满足合成....") - } - else { - print("images 少于2张....") - } takePhotoSemaphore.signal() } @@ -80,26 +84,30 @@ extension CCSpatialShootController: AVCaptureAudioDataOutputSampleBufferDelegate //通过samplebuffer生成uiimage - func imageFromSampleBuffer(sampleBuffer: CMSampleBuffer) -> UIImage? { - // 获取像素缓冲区 + func imageFromSampleBuffer(sampleBuffer: CMSampleBuffer,orientation:AVCaptureVideoOrientation ) -> UIImage? { guard let imageBuffer = CMSampleBufferGetImageBuffer(sampleBuffer) else { return nil } - - // 创建CoreImage图像 - let ciImage = CIImage(cvImageBuffer: imageBuffer) - - // 将CIImage转换为CGImage - if let cgImage = CIContext(options: nil).createCGImage(ciImage, from: ciImage.extent) { - // 创建UIImage - let image = UIImage(cgImage: cgImage) - return image - } - - return nil + let ciImage = CIImage(cvPixelBuffer: imageBuffer) + let temporaryContext = CIContext(options: nil) + guard let cgImage = temporaryContext.createCGImage(ciImage, from: ciImage.extent) else { return nil } + print("rect:\(ciImage.extent)") + let image = UIImage(cgImage: cgImage, scale: UIScreen.main.scale, orientation: getImgOrientation(orientation: orientation)) + return image } + func getImgOrientation(orientation:AVCaptureVideoOrientation )->UIImage.Orientation { + switch orientation { + case .portrait: + return .up + case .portraitUpsideDown: + return .down + case .landscapeRight: + return .right + case .landscapeLeft: + return .left + } + } - - + @@ -184,7 +192,7 @@ extension CCSpatialShootController: AVCaptureAudioDataOutputSampleBufferDelegate let url = URL.documentsDirectory.appending(path:"aaa12.HEIC") let destination = CGImageDestinationCreateWithURL(url as CFURL, UTType.heic.identifier as CFString, 2, nil)! var oo = imageCGImagePropertyOrientation.rawValue - let orientation_cf = CFNumberCreate(nil, CFNumberType.intType, &oo) +// let orientation_cf = CFNumberCreate(nil, CFNumberType.intType, &oo) let properties1 = [ kCGImagePropertyGroups: [ kCGImagePropertyGroupIndex: 0, @@ -192,11 +200,11 @@ extension CCSpatialShootController: AVCaptureAudioDataOutputSampleBufferDelegate kCGImagePropertyGroupImageIndexLeft: 0, kCGImagePropertyGroupImageIndexRight: 1, ], - kCGImagePropertyTIFFDictionary:[ - kCGImagePropertyOrientation:orientation_cf, - ], - - kCGImagePropertyOrientation:orientation_cf as Any, +// kCGImagePropertyTIFFDictionary:[ +// kCGImagePropertyOrientation:orientation_cf, +// ], +// +// kCGImagePropertyOrientation:orientation_cf as Any, kCGImagePropertyHEIFDictionary: [ kIIOMetadata_CameraExtrinsicsKey: [ kIIOCameraExtrinsics_CoordinateSystemID: 0, @@ -220,10 +228,10 @@ extension CCSpatialShootController: AVCaptureAudioDataOutputSampleBufferDelegate kCGImagePropertyGroupImageIndexLeft: 0, kCGImagePropertyGroupImageIndexRight: 1, ], - kCGImagePropertyTIFFDictionary:[ - kCGImagePropertyOrientation:orientation_cf, - ], - kCGImagePropertyOrientation:orientation_cf as Any, +// kCGImagePropertyTIFFDictionary:[ +// kCGImagePropertyOrientation:orientation_cf, +// ], +// kCGImagePropertyOrientation:orientation_cf as Any, kCGImagePropertyHEIFDictionary: [ kIIOMetadata_CameraExtrinsicsKey: [