diff --git a/SwiftProject/SwiftProject.xcworkspace/xcuserdata/aaa.xcuserdatad/UserInterfaceState.xcuserstate b/SwiftProject/SwiftProject.xcworkspace/xcuserdata/aaa.xcuserdatad/UserInterfaceState.xcuserstate index 8675a63..0d52088 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 4041906..d50325e 100644 --- a/SwiftProject/SwiftProject.xcworkspace/xcuserdata/aaa.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist +++ b/SwiftProject/SwiftProject.xcworkspace/xcuserdata/aaa.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist @@ -942,8 +942,8 @@ filePath = "SwiftProject/Project/Controller/RecordingVideo/CCSpatialPhotoDisplayController/CCSpatialPhotoDisplayController.swift" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" - startingLineNumber = "227" - endingLineNumber = "227" + startingLineNumber = "228" + endingLineNumber = "228" landmarkName = "screenOrientationRotate()" landmarkType = "7"> @@ -990,8 +990,8 @@ filePath = "SwiftProject/Project/Controller/RecordingVideo/CCSpatialPhotoDisplayController/CCSpatialPhotoDisplayController.swift" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" - startingLineNumber = "235" - endingLineNumber = "235" + startingLineNumber = "236" + endingLineNumber = "236" landmarkName = "screenOrientationRotate()" landmarkType = "7"> diff --git a/SwiftProject/SwiftProject/Project/Controller/RecordingVideo/CCSpatialPhotoDisplayController/CCSpatialPhotoDisplayController.swift b/SwiftProject/SwiftProject/Project/Controller/RecordingVideo/CCSpatialPhotoDisplayController/CCSpatialPhotoDisplayController.swift index 10e7edf..722a18e 100644 --- a/SwiftProject/SwiftProject/Project/Controller/RecordingVideo/CCSpatialPhotoDisplayController/CCSpatialPhotoDisplayController.swift +++ b/SwiftProject/SwiftProject/Project/Controller/RecordingVideo/CCSpatialPhotoDisplayController/CCSpatialPhotoDisplayController.swift @@ -22,18 +22,12 @@ enum VideoReaderError : Error { class CCSpatialPhotoDisplayController: BaseController { let kNowTimeToUserDefaultKey_PhotoDisplayController:String = "kNowTimeToUserDefaultKey_PhotoDisplayController" - //保留外联屏幕 -// lazy var externalWindow:UIWindow = { -// return UIWindow(frame: self.view.bounds) -// }() //标记是否为横屏 var isLandscape:Bool = false var externalVC:ZZHExternalViewController? var externalDispalylink:CADisplayLink? var externalImageView:UIImageView? -// var player:AVPlayer = AVPlayer() - var outputVideoURL:URL? var dvc:UIDocumentViewController? @@ -64,7 +58,14 @@ class CCSpatialPhotoDisplayController: BaseController { } } } - var currentSpatialType = 0//标记当前选中的浏览种类 + var currentSpatialType = 0{//标记当前选中的浏览种类 + didSet{ + redBlueImage = nil + } + } + + //保留红蓝立体的uiimage + var redBlueImage:UIImage? //标记是否正在串流中:目前就是用于控制是否显示瞳距调节的slider部分 var isPlayingOnExternalScreen = false @@ -541,11 +542,12 @@ class CCSpatialPhotoDisplayController: BaseController { let lastImg = UIImage(ciImage: newpb) self.mImgView.image = lastImg - }else if(selectedIndex == 2){ + }else if(selectedIndex == 2){//红蓝立体 - let lastImg = joinImages_red_blue(lciImage: lciImage, rciImage: rciImage, scale: currentScale) - var ri = UIImage(ciImage: lastImg) + var ri = joinImages_red_blue(lciImage: lciImage, rciImage: rciImage, scale: currentScale,rbImage: redBlueImage) +// var ri = UIImage(ciImage: lastImg) 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 dcffb34..65bde81 100644 --- a/SwiftProject/SwiftProject/Project/Controller/RecordingVideo/CCSpatialPhotoDisplayController/CCSpatialPhotoDisplayEx.swift +++ b/SwiftProject/SwiftProject/Project/Controller/RecordingVideo/CCSpatialPhotoDisplayController/CCSpatialPhotoDisplayEx.swift @@ -86,48 +86,52 @@ extension CCSpatialPhotoDisplayController { //合成红蓝立体图片 - func joinImages_red_blue(lciImage:CIImage,rciImage:CIImage,scale: CGFloat) -> CIImage { - // 创建红色和蓝色滤镜 - let redColorMatrix: [CGFloat] = [ - 0.0, 0.0, 0.0, 0.0, 0.0, // 红色通道 - 0.0, 0.0, 0.0, 0.0, 0.0, // 绿色通道 - 0.0, 0.0, 1.0, 0.0, 0.0, // 蓝色通道 - 0.0, 0.0, 0.0, 1.0, 0.0 // 透明通道 - ] - - let blueColorMatrix: [CGFloat] = [ - 1.0, 0.0, 0.0, 0.0, 0.0, // 红色通道 - 0.0, 0.0, 0.0, 0.0, 0.0, // 绿色通道 - 0.0, 0.0, 0.0, 0.0, 0.0, // 蓝色通道 - 0.0, 0.0, 0.0, 1.0, 0.0 // 透明通道 - ] + func joinImages_red_blue(lciImage:CIImage,rciImage:CIImage,scale: CGFloat,rbImage:UIImage?) -> UIImage { + var lastImg:UIImage? = rbImage + if lastImg == nil { + // 创建红色和蓝色滤镜 + let redColorMatrix: [CGFloat] = [ + 0.0, 0.0, 0.0, 0.0, 0.0, // 红色通道 + 0.0, 0.0, 0.0, 0.0, 0.0, // 绿色通道 + 0.0, 0.0, 1.0, 0.0, 0.0, // 蓝色通道 + 0.0, 0.0, 0.0, 1.0, 0.0 // 透明通道 + ] + + let blueColorMatrix: [CGFloat] = [ + 1.0, 0.0, 0.0, 0.0, 0.0, // 红色通道 + 0.0, 0.0, 0.0, 0.0, 0.0, // 绿色通道 + 0.0, 0.0, 0.0, 0.0, 0.0, // 蓝色通道 + 0.0, 0.0, 0.0, 1.0, 0.0 // 透明通道 + ] - let redFilter = CIFilter(name: "CIColorMatrix")! - redFilter.setValue(lciImage, forKey: kCIInputImageKey) - redFilter.setValue(CIVector(values: redColorMatrix, count: redColorMatrix.count), forKey: "inputRVector") - - let blueFilter = CIFilter(name: "CIColorMatrix")! - blueFilter.setValue(rciImage, forKey: kCIInputImageKey) - blueFilter.setValue(CIVector(values: blueColorMatrix, count: blueColorMatrix.count), forKey: "inputBVector") - var lastImg:CIImage? = nil - // 获取处理后的图像 - if let redOutputImage = redFilter.outputImage, - let blueOutputImage = blueFilter.outputImage { + let redFilter = CIFilter(name: "CIColorMatrix")! + redFilter.setValue(lciImage, forKey: kCIInputImageKey) + redFilter.setValue(CIVector(values: redColorMatrix, count: redColorMatrix.count), forKey: "inputRVector") - let compositeFilter = CIFilter(name: "CIScreenBlendMode")! - compositeFilter.setValue(redOutputImage, forKey: kCIInputImageKey) - compositeFilter.setValue(blueOutputImage, forKey: kCIInputBackgroundImageKey) + let blueFilter = CIFilter(name: "CIColorMatrix")! + blueFilter.setValue(rciImage, forKey: kCIInputImageKey) + blueFilter.setValue(CIVector(values: blueColorMatrix, count: blueColorMatrix.count), forKey: "inputBVector") - let sharpenedFilter = CIFilter(name: "CISharpenLuminance")! - sharpenedFilter.setValue(compositeFilter.outputImage, forKey: kCIInputImageKey) - sharpenedFilter.setValue(2, forKey: kCIInputSharpnessKey) - lastImg = sharpenedFilter.outputImage! + // 获取处理后的图像 + if let redOutputImage = redFilter.outputImage, + let blueOutputImage = blueFilter.outputImage { + + let compositeFilter = CIFilter(name: "CIScreenBlendMode")! + compositeFilter.setValue(redOutputImage, forKey: kCIInputImageKey) + compositeFilter.setValue(blueOutputImage, forKey: kCIInputBackgroundImageKey) + + let sharpenedFilter = CIFilter(name: "CISharpenLuminance")! + sharpenedFilter.setValue(compositeFilter.outputImage, forKey: kCIInputImageKey) + sharpenedFilter.setValue(2, forKey: kCIInputSharpnessKey) + lastImg = UIImage(ciImage: sharpenedFilter.outputImage! ) + } } + if scale == 1 { return lastImg! } else { - let drawImg = UIImage(ciImage: lastImg!) + let drawImg = lastImg! let drawImageSize = drawImg.size let newImgSize = CGSizeMake(drawImageSize.width * scale, drawImageSize.height * scale) let newRect = CGRect(origin: CGPoint(x: (drawImageSize.width - newImgSize.width) * 0.5, y: (drawImageSize.height - newImgSize.height) * 0.5), size: newImgSize) @@ -135,10 +139,7 @@ extension CCSpatialPhotoDisplayController { drawImg.draw(in: newRect) let image = UIGraphicsGetImageFromCurrentImageContext()! UIGraphicsEndImageContext(); - - - let ci = CIImage(cgImage: image.cgImage!) - return ci + return image } }