继续调节瞳距
This commit is contained in:
parent
f2f42ff919
commit
ec2009dc4a
Binary file not shown.
@ -403,28 +403,13 @@
|
||||
filePath = "SwiftProject/Project/Util/ZZHImageExtension.swift"
|
||||
startingColumnNumber = "9223372036854775807"
|
||||
endingColumnNumber = "9223372036854775807"
|
||||
startingLineNumber = "79"
|
||||
endingLineNumber = "79"
|
||||
startingLineNumber = "89"
|
||||
endingLineNumber = "89"
|
||||
landmarkName = "getRotateFrom(_:)"
|
||||
landmarkType = "7">
|
||||
<Locations>
|
||||
<Location
|
||||
uuid = "742F2A13-D3B1-41EF-8BDA-BE012155DB3C - 8f7fed01daeafa98"
|
||||
shouldBeEnabled = "Yes"
|
||||
ignoreCount = "0"
|
||||
continueAfterRunningActions = "No"
|
||||
symbolName = "__C.UIImage.getRotateFrom() -> CoreGraphics.CGFloat"
|
||||
moduleName = "SwiftProject"
|
||||
usesParentBreakpointCondition = "Yes"
|
||||
urlString = "file:///Users/aaa/Documents/IOS%20Dev/VR/SwiftProject/SwiftProject/Project/Util/ZZHImageExtension.swift"
|
||||
startingColumnNumber = "9223372036854775807"
|
||||
endingColumnNumber = "9223372036854775807"
|
||||
startingLineNumber = "72"
|
||||
endingLineNumber = "72"
|
||||
offsetFromSymbolStart = "656">
|
||||
</Location>
|
||||
<Location
|
||||
uuid = "742F2A13-D3B1-41EF-8BDA-BE012155DB3C - bb01223bea0e32a"
|
||||
uuid = "742F2A13-D3B1-41EF-8BDA-BE012155DB3C - bb01223bea0e003"
|
||||
shouldBeEnabled = "Yes"
|
||||
ignoreCount = "0"
|
||||
continueAfterRunningActions = "No"
|
||||
@ -434,12 +419,27 @@
|
||||
urlString = "file:///Users/aaa/Documents/IOS%20Dev/VR/SwiftProject/SwiftProject/Project/Util/ZZHImageExtension.swift"
|
||||
startingColumnNumber = "9223372036854775807"
|
||||
endingColumnNumber = "9223372036854775807"
|
||||
startingLineNumber = "72"
|
||||
endingLineNumber = "72"
|
||||
startingLineNumber = "81"
|
||||
endingLineNumber = "81"
|
||||
offsetFromSymbolStart = "636">
|
||||
</Location>
|
||||
<Location
|
||||
uuid = "742F2A13-D3B1-41EF-8BDA-BE012155DB3C - bb01223bea0e003"
|
||||
shouldBeEnabled = "Yes"
|
||||
ignoreCount = "0"
|
||||
continueAfterRunningActions = "No"
|
||||
symbolName = "__C.UIImage.getRotateFrom(__C.UIImageOrientation) -> CoreGraphics.CGFloat"
|
||||
moduleName = "SwiftProject"
|
||||
usesParentBreakpointCondition = "Yes"
|
||||
urlString = "file:///Users/aaa/Documents/IOS%20Dev/VR/SwiftProject/SwiftProject/Project/Util/ZZHImageExtension.swift"
|
||||
startingColumnNumber = "9223372036854775807"
|
||||
endingColumnNumber = "9223372036854775807"
|
||||
startingLineNumber = "81"
|
||||
endingLineNumber = "81"
|
||||
offsetFromSymbolStart = "616">
|
||||
</Location>
|
||||
<Location
|
||||
uuid = "742F2A13-D3B1-41EF-8BDA-BE012155DB3C - bb01223bea0e04d"
|
||||
uuid = "742F2A13-D3B1-41EF-8BDA-BE012155DB3C - bb01223bea0e145"
|
||||
shouldBeEnabled = "Yes"
|
||||
ignoreCount = "0"
|
||||
continueAfterRunningActions = "No"
|
||||
@ -449,8 +449,8 @@
|
||||
urlString = "file:///Users/aaa/Documents/IOS%20Dev/VR/SwiftProject/SwiftProject/Project/Util/ZZHImageExtension.swift"
|
||||
startingColumnNumber = "9223372036854775807"
|
||||
endingColumnNumber = "9223372036854775807"
|
||||
startingLineNumber = "79"
|
||||
endingLineNumber = "79"
|
||||
startingLineNumber = "87"
|
||||
endingLineNumber = "87"
|
||||
offsetFromSymbolStart = "616">
|
||||
</Location>
|
||||
</Locations>
|
||||
@ -514,8 +514,8 @@
|
||||
filePath = "SwiftProject/Project/View/Album/CCSpaceAlbumFliterPopView/CCSpaceAlbumFilterPopView2.swift"
|
||||
startingColumnNumber = "9223372036854775807"
|
||||
endingColumnNumber = "9223372036854775807"
|
||||
startingLineNumber = "458"
|
||||
endingLineNumber = "458"
|
||||
startingLineNumber = "459"
|
||||
endingLineNumber = "459"
|
||||
landmarkName = "collectionView(_:cellForItemAt:)"
|
||||
landmarkType = "7">
|
||||
</BreakpointContent>
|
||||
|
||||
@ -11,6 +11,8 @@ import Photos
|
||||
import AVKit
|
||||
import VideoToolbox
|
||||
|
||||
let CustomPlayerShareSemaphore = DispatchSemaphore(value: 1)
|
||||
|
||||
extension ZZHCustomPlayer {
|
||||
|
||||
func getPlayerItem() -> AVPlayerItem {
|
||||
@ -22,7 +24,9 @@ extension ZZHCustomPlayer {
|
||||
print("self 被销毁了.....")
|
||||
return
|
||||
}
|
||||
CustomPlayerShareSemaphore.wait()
|
||||
weakSelf.convertFrame(request:request)
|
||||
CustomPlayerShareSemaphore.signal()
|
||||
|
||||
} completionHandler: { ac, err in
|
||||
if err != nil {
|
||||
@ -72,7 +76,7 @@ extension ZZHCustomPlayer {
|
||||
}
|
||||
else {
|
||||
ciImg = self.otherModeImgWithMode(mode: self.selectedIndex,compositionTime: compositionTime)
|
||||
guard let ciImg else {
|
||||
guard ciImg != nil else {
|
||||
print("未合成成功.....,此处将进行重新构建assetoutput,然后再次重拾")
|
||||
quickLoadAReaderWhenSeek(startCT: compositionTime)
|
||||
ciImg = self.otherModeImgWithMode(mode: self.selectedIndex,compositionTime: compositionTime)
|
||||
|
||||
@ -459,10 +459,10 @@ class CustomParamBoardView: UIView {
|
||||
|
||||
//更新缩放的标题文本
|
||||
func updateScaleTitleWithValue(value:Float) {
|
||||
let minValue = 0.6
|
||||
let maxValue = 1.5
|
||||
let minValue = 0.3
|
||||
let maxValue = 1.8
|
||||
let resultValue = minValue + (maxValue - minValue) * Double(value)
|
||||
let formattedValue = String(format: "\(NSLocalizedString("v1.6_缩放", comment: ""))%.f%%", (resultValue - 0.5) * 200)
|
||||
let formattedValue = String(format: "\(NSLocalizedString("v1.6_缩放", comment: ""))%.f%%", (resultValue) * 100)
|
||||
self.scaleTitleLabel?.text = formattedValue
|
||||
if let scaleCallback = self.scaleCallback {
|
||||
scaleCallback(CGFloat(resultValue))
|
||||
@ -471,10 +471,10 @@ class CustomParamBoardView: UIView {
|
||||
|
||||
//提供给它的类方法调用
|
||||
func exUpdateScaleTitleWithValue(resultValue:CGFloat) {
|
||||
let formattedValue = String(format: "\(NSLocalizedString("v1.6_缩放", comment: ""))%.f%%", (resultValue - 0.5) * 200)
|
||||
let formattedValue = String(format: "\(NSLocalizedString("v1.6_缩放", comment: ""))%.f%%", (resultValue) * 100)
|
||||
self.scaleTitleLabel?.text = formattedValue
|
||||
let minValue = 0.6
|
||||
let maxValue = 1.5
|
||||
let minValue = 0.3
|
||||
let maxValue = 1.8
|
||||
// let resultValue = minValue + (maxValue - minValue) * Double(value)
|
||||
let v = (resultValue - minValue) / (maxValue - minValue)
|
||||
self.scaleSlider?.slider?.value = Float(v)
|
||||
|
||||
@ -20,7 +20,7 @@ class PlayByTransferConvertor {
|
||||
// print("sta.....>>>>>>>thread")
|
||||
|
||||
while let nextSampleBuffer = assetOutput.copyNextSampleBuffer() {
|
||||
var presentationTime = CMSampleBufferGetPresentationTimeStamp(nextSampleBuffer)
|
||||
let presentationTime = CMSampleBufferGetPresentationTimeStamp(nextSampleBuffer)
|
||||
// print("presentationTime: \(presentationTime) \ntime: \(time)")
|
||||
// if presentationTime! > time {//如果当前获取的buffer的时间>time的时间,则直接返回即可
|
||||
// print("如果当前获取的buffer的时间>time的时间,则直接返回即可...")
|
||||
@ -186,30 +186,36 @@ class PlayByTransferConvertor {
|
||||
|
||||
|
||||
//获取缩放图片
|
||||
let n_left = getImgWithScale(image: left, scale: scale - 0.5)
|
||||
let n_right = getImgWithScale(image: right, scale: scale - 0.5)
|
||||
let (n_left,n_left_size) = getImgWithScale(image: left, scale: scale)
|
||||
let (n_right,n_right_size) = getImgWithScale(image: right, scale: scale)
|
||||
|
||||
|
||||
//获取调整了瞳距的图片
|
||||
let x_offset = CGFloat(abs(ed) * edS) //关于瞳距的x偏移量
|
||||
let imageWidth = left.size.width*0.5 - x_offset
|
||||
let imageHeight = left.size.height
|
||||
let ed_left = getImgWithED(image: n_left, imgWidth: imageWidth)
|
||||
let ed_right = getImgWithED(image: n_right, imgWidth: imageWidth)
|
||||
|
||||
|
||||
let (ed_left,last_left_size) = getImgWithED(image: n_left, imgWidth: imageWidth,imageRealSize: n_left_size)
|
||||
let (ed_right,last_right_size) = getImgWithED(image: n_right, imgWidth: imageWidth,imageRealSize: n_right_size)
|
||||
print("n_left_size:\(n_left_size)\nlast_left_size\(last_left_size)")
|
||||
// testImageUi(image: ed_left)
|
||||
let newImageSize = left.size
|
||||
UIGraphicsBeginImageContextWithOptions(newImageSize, false, 1);
|
||||
if (ed > 0) {//左视图宽度减小,同时x点的坐标值为0;右视图宽度减小,同时x点的坐标值增加
|
||||
ed_left.draw(in: CGRect(x:0, y:0, width:imageWidth, height:imageHeight))
|
||||
ed_right.draw(in: CGRect(x:left.size.width/2 + x_offset, y:0, width:imageWidth, height:imageHeight))
|
||||
ed_left.draw(in: CGRect(x:0, y:0, width:last_left_size.width, height:last_left_size.height))
|
||||
ed_right.draw(in: CGRect(x:left.size.width/2 + x_offset, y:0, width:last_right_size.width, height:last_right_size.height))
|
||||
}
|
||||
else if (ed < 0) {
|
||||
ed_left.draw(in: CGRect(x:x_offset, y:0, width:imageWidth, height:imageHeight))
|
||||
ed_right.draw(in: CGRect(x:left.size.width*0.5, y:0, width:imageWidth, height:imageHeight))
|
||||
ed_left.draw(in: CGRect(x:x_offset, y:0, width:last_left_size.width, height:last_left_size.height))
|
||||
ed_right.draw(in: CGRect(x:left.size.width*0.5, y:0, width:last_right_size.width, height:last_right_size.height))
|
||||
}
|
||||
else {//瞳距没有改变的情况
|
||||
ed_left.draw(in: CGRect(x:0, y:0, width:imageWidth, height:imageHeight))
|
||||
ed_right.draw(in: CGRect(x:imageWidth, y:0, width:imageWidth, height:imageHeight))
|
||||
let leftRect = CGRect(x:(imageWidth - n_left_size.width) * 0.5, y:(imageHeight - n_left_size.height) * 0.5 , width:n_left_size.width, height:n_left_size.height)
|
||||
ed_left.draw(in:leftRect )
|
||||
|
||||
let rightRect = CGRect(x:imageWidth + (imageWidth - n_right_size.width) * 0.5 , y:(imageHeight - n_right_size.height) * 0.5, width:n_right_size.width, height:n_right_size.height)
|
||||
ed_right.draw(in:rightRect )
|
||||
|
||||
print("imageWidth:\(imageWidth) \ned_left.size:\(ed_left.size) \nl:\(leftRect) \nr:\(rightRect)")
|
||||
}
|
||||
|
||||
|
||||
@ -220,31 +226,66 @@ class PlayByTransferConvertor {
|
||||
return ci
|
||||
}
|
||||
|
||||
//图像缩放
|
||||
func getImgWithScale(image:UIImage,scale:CGFloat) -> UIImage {
|
||||
let dRect = CGSizeMake(image.size.width*0.5, image.size.height)
|
||||
let imgWidth = image.size.width*scale
|
||||
let imgHeight = image.size.height*scale
|
||||
UIGraphicsBeginImageContextWithOptions(dRect, false, 1);
|
||||
image.draw(in: CGRectMake((dRect.width - imgWidth)*0.5, (dRect.height - imgHeight)*0.5, imgWidth, imgHeight))
|
||||
let newImage = UIGraphicsGetImageFromCurrentImageContext()!
|
||||
UIGraphicsEndImageContext();
|
||||
return newImage
|
||||
//图像缩放 调整默认scale,默认值应当为1
|
||||
func getImgWithScale(image:UIImage,scale:CGFloat) -> (UIImage,CGSize) {
|
||||
//获取原始的rect
|
||||
let originSize = CGSize(width: image.size.width*0.5, height: image.size.height*0.5)
|
||||
|
||||
var newImage = image
|
||||
var newSize = originSize//作图的区域
|
||||
|
||||
if scale > 1 {//图片会被裁减,但size的宽度不会改变,而高度会随scale发生改变
|
||||
//计算放大图片需要用于截取图片的size,
|
||||
//本次height在画布上的增量
|
||||
let Hs_add = (image.size.height - image.size.height*0.5)*(scale - 1)
|
||||
//根据本次在画布上的增量height重新计算画布size
|
||||
newSize = CGSizeMake(originSize.width, originSize.height + Hs_add)
|
||||
|
||||
//本次根据scale进行初步计算的裁剪区域size
|
||||
let cutSize = CGSizeMake((2 - scale)*(image.size.height * newSize.width/newSize.height),(2 - scale) * image.size.height)
|
||||
|
||||
let cutRect = CGRectMake((image.size.width - cutSize.width)*0.5, (image.size.height - cutSize.height) * 0.5, cutSize.width, cutSize.height)
|
||||
newImage = image.imageAtRect(rect: cutRect)!
|
||||
}
|
||||
else if scale < 1 {//图片不会被裁减,但size会被缩小
|
||||
//计算被等比缩小的size
|
||||
newSize = CGSizeMake(scale*originSize.width, scale*originSize.height)
|
||||
}
|
||||
|
||||
return (newImage,newSize)
|
||||
}
|
||||
|
||||
//图像瞳距
|
||||
func getImgWithED(image:UIImage,imgWidth:CGFloat) -> UIImage {
|
||||
// let dRect = CGSizeMake(imgWidth, image.size.height)
|
||||
//
|
||||
// UIGraphicsBeginImageContextWithOptions(dRect, false, 1);
|
||||
// image.draw(in: CGRectMake((image.size.width - imgWidth)*0.5, 0, image.size.width, dRect.height))
|
||||
// let newImage = UIGraphicsGetImageFromCurrentImageContext()!
|
||||
// UIGraphicsEndImageContext();
|
||||
// return newImage
|
||||
// let dSize = CGSizeMake(imgWidth, image.size.height)
|
||||
let dRect = CGRectMake((image.size.width - imgWidth) * 0.5, 0, imgWidth, image.size.height)
|
||||
//图像瞳距,参数条件必须满足:image能够等比缩放后填充满imageRealSize,即image的真实size与imageRealSize预期size并不要求一致,但要求等比
|
||||
func getImgWithED(image:UIImage,imgWidth:CGFloat,imageRealSize:CGSize) -> (UIImage,CGSize) {
|
||||
if imageRealSize.width <= imgWidth {
|
||||
|
||||
print("瞳距返回,不用处理")
|
||||
return (image,imageRealSize)
|
||||
}
|
||||
print("瞳距要处理")
|
||||
let s = imageRealSize.height / image.size.height
|
||||
let dRect = CGRectMake((imageRealSize.width - imgWidth) * s * 0.5, 0, imgWidth, image.size.height)
|
||||
let newImage = image.imageAtRect(rect: dRect)
|
||||
return newImage!
|
||||
return (newImage!,CGSize(width: imgWidth, height: imageRealSize.height))
|
||||
}
|
||||
|
||||
func testImageUi(image:UIImage) {
|
||||
DispatchQueue.main.async {
|
||||
var imageView = KWindow?.viewWithTag(9988) as? UIImageView
|
||||
if let iv = imageView {
|
||||
iv.image = image
|
||||
}
|
||||
else {
|
||||
imageView = UIImageView(frame: CGRect(x: 20, y: 100, width: KScreenWidth*0.5, height: 260))
|
||||
imageView?.tag = 9988
|
||||
imageView?.backgroundColor = .red
|
||||
imageView?.contentMode = .scaleAspectFit
|
||||
imageView?.clipsToBounds = true
|
||||
imageView?.image = image
|
||||
KWindow?.addSubview(imageView!)
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
func joinImages_backup( leftImage:CIImage, rightImage:CIImage) -> CIImage {
|
||||
|
||||
@ -8,11 +8,21 @@
|
||||
import Foundation
|
||||
import UIKit
|
||||
import CoreImage
|
||||
let EXImageContext = CIContext()
|
||||
extension UIImage {
|
||||
|
||||
func imageAtRect(rect: CGRect) -> UIImage? {
|
||||
// 确保CGRect在图片范围内
|
||||
guard let cgImage = self.cgImage else { return nil }
|
||||
guard let cgImage = self.cgImage else {
|
||||
guard let ciImage = self.ciImage else {
|
||||
return nil
|
||||
}
|
||||
// 将CIImage转换为CGImage
|
||||
let imageRef = ciImage.cropped(to: rect)
|
||||
//此处根据文档说明要求,必须转换坐标才能正常展示
|
||||
let final = EXImageContext.createCGImage(imageRef, from:imageRef.extent)
|
||||
return UIImage(cgImage: final!)
|
||||
}
|
||||
let imageRef = cgImage.cropping(to: rect)
|
||||
return imageRef == nil ? nil : UIImage(cgImage: imageRef!)
|
||||
}
|
||||
|
||||
@ -445,9 +445,10 @@ extension CCSpaceAlbumFilterPopView2:UICollectionViewDataSource, UICollectionVie
|
||||
|
||||
|
||||
let model:CCSpaceAlbumFliterModel = dataSource[indexPath.item]
|
||||
// let s = UIScreen.main.scale
|
||||
// cell.imageView.image = model.image?.preparingThumbnail(of: CGSize(width: cell.imageView.size.width*s, height: cell.imageView.size.height*s))
|
||||
|
||||
cell.imageView.image = model.image
|
||||
|
||||
if model.assetType == .image {
|
||||
|
||||
cell.frameCountLabel.text = NSLocalizedString("空间", comment: "")
|
||||
|
||||
Loading…
Reference in New Issue
Block a user