完成:

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!)!
UIImageWriteToSavedPhotosAlbum(result, self, #selector(completeSaveImg(_:error:contextInfo:)), nil)
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)
default:

View File

@ -16,6 +16,32 @@ class SpatialImageConvertor {
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?){
guard let imageSource = CGImageSourceCreateWithData(imageData as CFData, nil) else {
return (nil,nil)
@ -48,7 +74,7 @@ class SpatialImageConvertor {
}
//
// SBS
class func joinImages_sbs( left:UIImage, right:UIImage,imgWidth:CGFloat,imgHeight:CGFloat) -> CIImage {
let newImageSize = CGSize(width:imgWidth, height: imgHeight);
UIGraphicsBeginImageContextWithOptions(newImageSize, false, 1);
@ -60,4 +86,17 @@ class SpatialImageConvertor {
let ci = CIImage(cgImage: image.cgImage!)
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
}
}