diff --git a/SwiftProject/SwiftProject/Project/Controller/RecordingVideo/CCSpatialPhotoDisplayController.swift b/SwiftProject/SwiftProject/Project/Controller/RecordingVideo/CCSpatialPhotoDisplayController.swift index 759f097..3b9b88f 100644 --- a/SwiftProject/SwiftProject/Project/Controller/RecordingVideo/CCSpatialPhotoDisplayController.swift +++ b/SwiftProject/SwiftProject/Project/Controller/RecordingVideo/CCSpatialPhotoDisplayController.swift @@ -40,6 +40,7 @@ class CCSpatialPhotoDisplayController: BaseController { var imageAsset:PHAsset? var imgData:Data? + var imgOritentation:UIImage.Orientation = .left //空间视频 交叉眼 红蓝立体 高斯模糊 var type = 0 @@ -170,7 +171,7 @@ class CCSpatialPhotoDisplayController: BaseController { //展示 var image = UIImage(data: originalData!) mImgView.image = image - + imgOritentation = image?.imageOrientation ?? .left let isSpatial = isSpatialImage(originalData: originalData!) if !isSpatial { @@ -339,7 +340,7 @@ class CCSpatialPhotoDisplayController: BaseController { if(selectedIndex == 0){ //空间照片 --- 单眼2D(展示原照片或者广角或者主摄其中一个) - var image = UIImage(data: photoOriginalData!) + let image = UIImage(data: photoOriginalData!) mImgView.image = image }else if(selectedIndex == 1){ @@ -394,7 +395,7 @@ class CCSpatialPhotoDisplayController: BaseController { let lastImg = compositeFilter.outputImage! DispatchQueue.main.async { [weak self] in var ri = UIImage(ciImage: lastImg) - ri = ri.getUpImg() + ri = ri.getUpImg(imgOrigOritentation: self?.imgOritentation ?? .left) self!.mImgView.image = ri } } @@ -512,9 +513,9 @@ class CCSpatialPhotoDisplayController: BaseController { //将两张图片合成一张图片 func joinImages( leftImage:CIImage, rightImage:CIImage) -> CIImage { var left = UIImage(ciImage: leftImage ) - left = left.getUpImg() + left = left.getUpImg(imgOrigOritentation: imgOritentation) var right = UIImage(ciImage: rightImage ) - right = right.getUpImg() + right = right.getUpImg(imgOrigOritentation: imgOritentation) let imageWidth = left.size.width/2 + right.size.width/2 let imageHeight = left.size.height/2 diff --git a/SwiftProject/SwiftProject/Project/Controller/RecordingVideo/CCSpatialShootController.swift b/SwiftProject/SwiftProject/Project/Controller/RecordingVideo/CCSpatialShootController.swift index ab11b10..4754370 100644 --- a/SwiftProject/SwiftProject/Project/Controller/RecordingVideo/CCSpatialShootController.swift +++ b/SwiftProject/SwiftProject/Project/Controller/RecordingVideo/CCSpatialShootController.swift @@ -34,7 +34,6 @@ class CCSpatialShootController: BaseController { var isRecording = false var imageCGImagePropertyOrientation:CGImagePropertyOrientation = CGImagePropertyOrientation.left//由于cgimage无法保留图像的方向 var deviceOrientation = 1//监听设备方向 1,表示竖屏;2,表示横屏 - let operationQueue:OperationQueue = OperationQueue() var leftEyeVideoURL:URL? var rightEyeVideoURL:URL? diff --git a/SwiftProject/SwiftProject/Project/Util/SpatialImageConvertor.swift b/SwiftProject/SwiftProject/Project/Util/SpatialImageConvertor.swift index ebef89d..91fb5d3 100644 --- a/SwiftProject/SwiftProject/Project/Util/SpatialImageConvertor.swift +++ b/SwiftProject/SwiftProject/Project/Util/SpatialImageConvertor.swift @@ -59,12 +59,14 @@ class SpatialImageConvertor { let lciImage = CIImage(cgImage: frames.first!) let rciImage = CIImage(cgImage: frames[1]) + var image = UIImage(data: imageData) + let left_uiimage = UIImage(ciImage: lciImage ) - let left_uiimage_new = left_uiimage.getUpImg() + let left_uiimage_new = left_uiimage.getUpImg(imgOrigOritentation: image?.imageOrientation ?? .left) let right_uiimage = UIImage(ciImage: rciImage ) - let right_uiimage_new = right_uiimage.getUpImg() + let right_uiimage_new = right_uiimage.getUpImg(imgOrigOritentation: image?.imageOrientation ?? .left) return (left_uiimage_new,right_uiimage_new) } diff --git a/SwiftProject/SwiftProject/Project/Util/ZZHImageExtension.swift b/SwiftProject/SwiftProject/Project/Util/ZZHImageExtension.swift index 1631b71..16dc374 100644 --- a/SwiftProject/SwiftProject/Project/Util/ZZHImageExtension.swift +++ b/SwiftProject/SwiftProject/Project/Util/ZZHImageExtension.swift @@ -9,6 +9,29 @@ import Foundation import UIKit extension UIImage { + +// func rotate( radians: CGFloat) -> UIImage? { +// // 计算旋转角度对应的弧度 +// let radians = radians * CGFloat.pi / 180 +// // 创建一个2D转换 +// var transform = CGAffineTransform(rotationAngle: radians) +// // 计算变换后的图片大小 +// let rotatedViewBox = UIView(frame: CGRect(origin: .zero, size: self.size)) +// rotatedViewBox.transform = transform +// let rotatedSize = rotatedViewBox.frame.size +// // 开始图形上下文 +// UIGraphicsBeginImageContextWithOptions(rotatedSize, false, 1.0) +// defer { UIGraphicsEndImageContext() } +// // 创建一个相同大小的视图,并应用变换 +// let rotatedView = UIView(frame: CGRect(origin: .zero, size: rotatedSize)) +// rotatedView.transform = transform +// // 将image绘制到上下文 +// self.draw(in: rotatedView.frame) +// // 从上下文获取新图片 +// return UIGraphicsGetImageFromCurrentImageContext() +// } +// +// func rotate(radians: CGFloat) -> UIImage { let rotatedSize = CGRect(origin: .zero, size: size) .applying(CGAffineTransform(rotationAngle: CGFloat(radians))) @@ -26,26 +49,27 @@ extension UIImage { return rotatedImage ?? self } - + return self } //返回正向图片 - func getUpImg()->UIImage { - let dg = getRotateFrom() + func getUpImg(imgOrigOritentation:UIImage.Orientation)->UIImage { + + let dg = getRotateFrom(imgOrigOritentation) let rotatedImage = rotate(radians:dg) return rotatedImage } - func getRotateFrom() ->CGFloat { - print("..or:\(self.imageOrientation)") - if self.imageOrientation == .left { + func getRotateFrom(_ imgOrigOritentation:UIImage.Orientation) ->CGFloat { + print("..or:\(imgOrigOritentation.rawValue)") + if imgOrigOritentation == .left { + return -.pi/2 + } else if imgOrigOritentation == .right{ return .pi/2 - } else if self.imageOrientation == .right{ - return -.pi/2 } - else { - return -.pi/2 + else {//对于down、up的暂时不用管,因为空间照片要求横着拍,所以这里就先随便写一个方向,待后面需要时再做调整 + return .pi } } }