处理红蓝立体卡顿问题

This commit is contained in:
bluesea 2024-04-30 14:27:48 +08:00
parent 622c13d4bd
commit 1dfa7defe2
4 changed files with 55 additions and 52 deletions

View File

@ -942,8 +942,8 @@
filePath = "SwiftProject/Project/Controller/RecordingVideo/CCSpatialPhotoDisplayController/CCSpatialPhotoDisplayController.swift" filePath = "SwiftProject/Project/Controller/RecordingVideo/CCSpatialPhotoDisplayController/CCSpatialPhotoDisplayController.swift"
startingColumnNumber = "9223372036854775807" startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807"
startingLineNumber = "227" startingLineNumber = "228"
endingLineNumber = "227" endingLineNumber = "228"
landmarkName = "screenOrientationRotate()" landmarkName = "screenOrientationRotate()"
landmarkType = "7"> landmarkType = "7">
<Locations> <Locations>
@ -990,8 +990,8 @@
filePath = "SwiftProject/Project/Controller/RecordingVideo/CCSpatialPhotoDisplayController/CCSpatialPhotoDisplayController.swift" filePath = "SwiftProject/Project/Controller/RecordingVideo/CCSpatialPhotoDisplayController/CCSpatialPhotoDisplayController.swift"
startingColumnNumber = "9223372036854775807" startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807"
startingLineNumber = "235" startingLineNumber = "236"
endingLineNumber = "235" endingLineNumber = "236"
landmarkName = "screenOrientationRotate()" landmarkName = "screenOrientationRotate()"
landmarkType = "7"> landmarkType = "7">
<Locations> <Locations>

View File

@ -22,18 +22,12 @@ enum VideoReaderError : Error {
class CCSpatialPhotoDisplayController: BaseController { class CCSpatialPhotoDisplayController: BaseController {
let kNowTimeToUserDefaultKey_PhotoDisplayController:String = "kNowTimeToUserDefaultKey_PhotoDisplayController" let kNowTimeToUserDefaultKey_PhotoDisplayController:String = "kNowTimeToUserDefaultKey_PhotoDisplayController"
//
// lazy var externalWindow:UIWindow = {
// return UIWindow(frame: self.view.bounds)
// }()
// //
var isLandscape:Bool = false var isLandscape:Bool = false
var externalVC:ZZHExternalViewController? var externalVC:ZZHExternalViewController?
var externalDispalylink:CADisplayLink? var externalDispalylink:CADisplayLink?
var externalImageView:UIImageView? var externalImageView:UIImageView?
// var player:AVPlayer = AVPlayer()
var outputVideoURL:URL? var outputVideoURL:URL?
var dvc:UIDocumentViewController? var dvc:UIDocumentViewController?
@ -64,7 +58,14 @@ class CCSpatialPhotoDisplayController: BaseController {
} }
} }
} }
var currentSpatialType = 0// var currentSpatialType = 0{//
didSet{
redBlueImage = nil
}
}
//uiimage
var redBlueImage:UIImage?
//:slider //:slider
var isPlayingOnExternalScreen = false var isPlayingOnExternalScreen = false
@ -541,11 +542,12 @@ class CCSpatialPhotoDisplayController: BaseController {
let lastImg = UIImage(ciImage: newpb) let lastImg = UIImage(ciImage: newpb)
self.mImgView.image = lastImg 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 = joinImages_red_blue(lciImage: lciImage, rciImage: rciImage, scale: currentScale,rbImage: redBlueImage)
var ri = UIImage(ciImage: lastImg) // var ri = UIImage(ciImage: lastImg)
ri = ri.getUpImg(imgOrigOritentation: self.imgOritentation ) ri = ri.getUpImg(imgOrigOritentation: self.imgOritentation )
redBlueImage = ri
self.mImgView.image = ri self.mImgView.image = ri

View File

@ -86,48 +86,52 @@ extension CCSpatialPhotoDisplayController {
// //
func joinImages_red_blue(lciImage:CIImage,rciImage:CIImage,scale: CGFloat) -> CIImage { func joinImages_red_blue(lciImage:CIImage,rciImage:CIImage,scale: CGFloat,rbImage:UIImage?) -> UIImage {
// var lastImg:UIImage? = rbImage
let redColorMatrix: [CGFloat] = [ if lastImg == nil {
0.0, 0.0, 0.0, 0.0, 0.0, // //
0.0, 0.0, 0.0, 0.0, 0.0, // 绿 let redColorMatrix: [CGFloat] = [
0.0, 0.0, 1.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, 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, // 绿 let blueColorMatrix: [CGFloat] = [
0.0, 0.0, 0.0, 0.0, 0.0, // 1.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, 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")! let redFilter = CIFilter(name: "CIColorMatrix")!
redFilter.setValue(lciImage, forKey: kCIInputImageKey) redFilter.setValue(lciImage, forKey: kCIInputImageKey)
redFilter.setValue(CIVector(values: redColorMatrix, count: redColorMatrix.count), forKey: "inputRVector") 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 compositeFilter = CIFilter(name: "CIScreenBlendMode")! let blueFilter = CIFilter(name: "CIColorMatrix")!
compositeFilter.setValue(redOutputImage, forKey: kCIInputImageKey) blueFilter.setValue(rciImage, forKey: kCIInputImageKey)
compositeFilter.setValue(blueOutputImage, forKey: kCIInputBackgroundImageKey) blueFilter.setValue(CIVector(values: blueColorMatrix, count: blueColorMatrix.count), forKey: "inputBVector")
let sharpenedFilter = CIFilter(name: "CISharpenLuminance")! //
sharpenedFilter.setValue(compositeFilter.outputImage, forKey: kCIInputImageKey) if let redOutputImage = redFilter.outputImage,
sharpenedFilter.setValue(2, forKey: kCIInputSharpnessKey) let blueOutputImage = blueFilter.outputImage {
lastImg = sharpenedFilter.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 { if scale == 1 {
return lastImg! return lastImg!
} }
else { else {
let drawImg = UIImage(ciImage: lastImg!) let drawImg = lastImg!
let drawImageSize = drawImg.size let drawImageSize = drawImg.size
let newImgSize = CGSizeMake(drawImageSize.width * scale, drawImageSize.height * scale) 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) 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) drawImg.draw(in: newRect)
let image = UIGraphicsGetImageFromCurrentImageContext()! let image = UIGraphicsGetImageFromCurrentImageContext()!
UIGraphicsEndImageContext(); UIGraphicsEndImageContext();
return image
let ci = CIImage(cgImage: image.cgImage!)
return ci
} }
} }