处理红蓝立体卡顿问题

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"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "227"
endingLineNumber = "227"
startingLineNumber = "228"
endingLineNumber = "228"
landmarkName = "screenOrientationRotate()"
landmarkType = "7">
<Locations>
@ -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">
<Locations>

View File

@ -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

View File

@ -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
}
}