完成:

1.空间图片转HOU并保存相册;
2.空间图片转FOU并保存相册;
This commit is contained in:
bluesea 2024-03-07 15:12:11 +08:00
parent e60458db5f
commit 38cde26cd9
2 changed files with 47 additions and 2 deletions

View File

@ -230,7 +230,13 @@ class VRPhotoTransformController: BaseController {
let result:UIImage = SpatialImageConvertor.convertToHSBS(imageData: sourceImageData!)! let result:UIImage = SpatialImageConvertor.convertToHSBS(imageData: sourceImageData!)!
UIImageWriteToSavedPhotosAlbum(result, self, #selector(completeSaveImg(_:error:contextInfo:)), nil) UIImageWriteToSavedPhotosAlbum(result, self, #selector(completeSaveImg(_:error:contextInfo:)), nil)
case .fsbs_3D: case .fsbs_3D:
let result:UIImage = SpatialImageConvertor.convertToHSBS(imageData: sourceImageData!)! let result:UIImage = SpatialImageConvertor.convertToFSBS(imageData: sourceImageData!)!
UIImageWriteToSavedPhotosAlbum(result, self, #selector(completeSaveImg(_:error:contextInfo:)), nil)
case .hou_3d:
let result:UIImage = SpatialImageConvertor.convertToHOU(imageData: sourceImageData!)!
UIImageWriteToSavedPhotosAlbum(result, self, #selector(completeSaveImg(_:error:contextInfo:)), nil)
case .fou_3D:
let result:UIImage = SpatialImageConvertor.convertToFOU(imageData: sourceImageData!)!
UIImageWriteToSavedPhotosAlbum(result, self, #selector(completeSaveImg(_:error:contextInfo:)), nil) UIImageWriteToSavedPhotosAlbum(result, self, #selector(completeSaveImg(_:error:contextInfo:)), nil)
default: default:

View File

@ -16,6 +16,32 @@ class SpatialImageConvertor {
return lastImg return lastImg
} }
//fsbs
public class func convertToFSBS(imageData:Data) -> UIImage? {
let (left_uiimage,right_uiimage) = SpatialImageConvertor.getLeftAndRightImgFrom(imageData: imageData)
let newpb = SpatialImageConvertor.joinImages_sbs( left: left_uiimage!, right:right_uiimage! ,imgWidth: left_uiimage!.size.width*2,imgHeight:left_uiimage!.size.height)
let lastImg = SpatialImageConvertor.convertCIImageToUIImage(ciImage: newpb)!
return lastImg
}
//hou
public class func convertToHOU(imageData:Data) -> UIImage? {
let (left_uiimage,right_uiimage) = SpatialImageConvertor.getLeftAndRightImgFrom(imageData: imageData)
let newpb = SpatialImageConvertor.joinImages_ou( left: left_uiimage!, right:right_uiimage! ,imgWidth: left_uiimage!.size.width,imgHeight:left_uiimage!.size.height)
let lastImg = SpatialImageConvertor.convertCIImageToUIImage(ciImage: newpb)!
return lastImg
}
//fou
public class func convertToFOU(imageData:Data) -> UIImage? {
let (left_uiimage,right_uiimage) = SpatialImageConvertor.getLeftAndRightImgFrom(imageData: imageData)
let newpb = SpatialImageConvertor.joinImages_ou( left: left_uiimage!, right:right_uiimage! ,imgWidth: left_uiimage!.size.width,imgHeight:left_uiimage!.size.height*2)
let lastImg = SpatialImageConvertor.convertCIImageToUIImage(ciImage: newpb)!
return lastImg
}
class func getLeftAndRightImgFrom(imageData:Data) -> (left_uiimage:UIImage?,right_uiimage:UIImage?){ class func getLeftAndRightImgFrom(imageData:Data) -> (left_uiimage:UIImage?,right_uiimage:UIImage?){
guard let imageSource = CGImageSourceCreateWithData(imageData as CFData, nil) else { guard let imageSource = CGImageSourceCreateWithData(imageData as CFData, nil) else {
return (nil,nil) return (nil,nil)
@ -48,7 +74,7 @@ class SpatialImageConvertor {
} }
// // SBS
class func joinImages_sbs( left:UIImage, right:UIImage,imgWidth:CGFloat,imgHeight:CGFloat) -> CIImage { class func joinImages_sbs( left:UIImage, right:UIImage,imgWidth:CGFloat,imgHeight:CGFloat) -> CIImage {
let newImageSize = CGSize(width:imgWidth, height: imgHeight); let newImageSize = CGSize(width:imgWidth, height: imgHeight);
UIGraphicsBeginImageContextWithOptions(newImageSize, false, 1); UIGraphicsBeginImageContextWithOptions(newImageSize, false, 1);
@ -60,4 +86,17 @@ class SpatialImageConvertor {
let ci = CIImage(cgImage: image.cgImage!) let ci = CIImage(cgImage: image.cgImage!)
return ci return ci
} }
// OU
class func joinImages_ou( left:UIImage, right:UIImage,imgWidth:CGFloat,imgHeight:CGFloat) -> CIImage {
let newImageSize = CGSize(width:imgWidth, height: imgHeight);
UIGraphicsBeginImageContextWithOptions(newImageSize, false, 1);
left.draw(in: CGRect(x:0, y:0, width:imgWidth, height:imgHeight/2))
right.draw(in: CGRect(x:0, y:imgHeight/2, width:imgWidth, height:imgHeight/2))
let image = UIGraphicsGetImageFromCurrentImageContext()!
UIGraphicsEndImageContext();
let ci = CIImage(cgImage: image.cgImage!)
return ci
}
} }