采用capturevideodataoutput图片合成ok,注意,此方式合成后的图片无须进行方向旋转
This commit is contained in:
parent
0b5b42c2bd
commit
7821f7be4d
Binary file not shown.
@ -14,8 +14,8 @@
|
|||||||
filePath = "SwiftProject/Project/Controller/CCHomeController.swift"
|
filePath = "SwiftProject/Project/Controller/CCHomeController.swift"
|
||||||
startingColumnNumber = "9223372036854775807"
|
startingColumnNumber = "9223372036854775807"
|
||||||
endingColumnNumber = "9223372036854775807"
|
endingColumnNumber = "9223372036854775807"
|
||||||
startingLineNumber = "593"
|
startingLineNumber = "612"
|
||||||
endingLineNumber = "593"
|
endingLineNumber = "612"
|
||||||
landmarkName = "imagePickerController(_:didFinishPickingMediaWithInfo:)"
|
landmarkName = "imagePickerController(_:didFinishPickingMediaWithInfo:)"
|
||||||
landmarkType = "7">
|
landmarkType = "7">
|
||||||
</BreakpointContent>
|
</BreakpointContent>
|
||||||
@ -30,8 +30,8 @@
|
|||||||
filePath = "SwiftProject/Project/Controller/CCHomeController.swift"
|
filePath = "SwiftProject/Project/Controller/CCHomeController.swift"
|
||||||
startingColumnNumber = "9223372036854775807"
|
startingColumnNumber = "9223372036854775807"
|
||||||
endingColumnNumber = "9223372036854775807"
|
endingColumnNumber = "9223372036854775807"
|
||||||
startingLineNumber = "585"
|
startingLineNumber = "604"
|
||||||
endingLineNumber = "585"
|
endingLineNumber = "604"
|
||||||
landmarkName = "imagePickerController(_:didFinishPickingMediaWithInfo:)"
|
landmarkName = "imagePickerController(_:didFinishPickingMediaWithInfo:)"
|
||||||
landmarkType = "7">
|
landmarkType = "7">
|
||||||
</BreakpointContent>
|
</BreakpointContent>
|
||||||
@ -62,8 +62,8 @@
|
|||||||
filePath = "SwiftProject/Project/Controller/CCHomeController.swift"
|
filePath = "SwiftProject/Project/Controller/CCHomeController.swift"
|
||||||
startingColumnNumber = "9223372036854775807"
|
startingColumnNumber = "9223372036854775807"
|
||||||
endingColumnNumber = "9223372036854775807"
|
endingColumnNumber = "9223372036854775807"
|
||||||
startingLineNumber = "549"
|
startingLineNumber = "568"
|
||||||
endingLineNumber = "549"
|
endingLineNumber = "568"
|
||||||
landmarkName = "photoLibrary()"
|
landmarkName = "photoLibrary()"
|
||||||
landmarkType = "7">
|
landmarkType = "7">
|
||||||
</BreakpointContent>
|
</BreakpointContent>
|
||||||
@ -457,38 +457,6 @@
|
|||||||
landmarkType = "7">
|
landmarkType = "7">
|
||||||
</BreakpointContent>
|
</BreakpointContent>
|
||||||
</BreakpointProxy>
|
</BreakpointProxy>
|
||||||
<BreakpointProxy
|
|
||||||
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
|
|
||||||
<BreakpointContent
|
|
||||||
uuid = "2332D3C8-7CB7-4C2D-9D3C-D9A7D05737DE"
|
|
||||||
shouldBeEnabled = "Yes"
|
|
||||||
ignoreCount = "0"
|
|
||||||
continueAfterRunningActions = "No"
|
|
||||||
filePath = "SwiftProject/Project/View/CCSpatialDisplayTypeView/CCSpatialDisplayTypeView.swift"
|
|
||||||
startingColumnNumber = "9223372036854775807"
|
|
||||||
endingColumnNumber = "9223372036854775807"
|
|
||||||
startingLineNumber = "172"
|
|
||||||
endingLineNumber = "172"
|
|
||||||
landmarkName = "init(menuWidth:arrow:datas:configures:dissMissCallback:)"
|
|
||||||
landmarkType = "7">
|
|
||||||
</BreakpointContent>
|
|
||||||
</BreakpointProxy>
|
|
||||||
<BreakpointProxy
|
|
||||||
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
|
|
||||||
<BreakpointContent
|
|
||||||
uuid = "02F226A8-01C1-4FB7-8724-3FB114CBBC79"
|
|
||||||
shouldBeEnabled = "Yes"
|
|
||||||
ignoreCount = "0"
|
|
||||||
continueAfterRunningActions = "No"
|
|
||||||
filePath = "SwiftProject/Project/View/CCSpatialDisplayTypeView/CCSpatialDisplayTypeView.swift"
|
|
||||||
startingColumnNumber = "9223372036854775807"
|
|
||||||
endingColumnNumber = "9223372036854775807"
|
|
||||||
startingLineNumber = "170"
|
|
||||||
endingLineNumber = "170"
|
|
||||||
landmarkName = "init(menuWidth:arrow:datas:configures:dissMissCallback:)"
|
|
||||||
landmarkType = "7">
|
|
||||||
</BreakpointContent>
|
|
||||||
</BreakpointProxy>
|
|
||||||
<BreakpointProxy
|
<BreakpointProxy
|
||||||
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
|
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
|
||||||
<BreakpointContent
|
<BreakpointContent
|
||||||
@ -547,8 +515,8 @@
|
|||||||
filePath = "SwiftProject/Project/Controller/RecordingVideo/CCSpatialShootController/CCSpatialShootController+Generate.swift"
|
filePath = "SwiftProject/Project/Controller/RecordingVideo/CCSpatialShootController/CCSpatialShootController+Generate.swift"
|
||||||
startingColumnNumber = "9223372036854775807"
|
startingColumnNumber = "9223372036854775807"
|
||||||
endingColumnNumber = "9223372036854775807"
|
endingColumnNumber = "9223372036854775807"
|
||||||
startingLineNumber = "186"
|
startingLineNumber = "194"
|
||||||
endingLineNumber = "186"
|
endingLineNumber = "194"
|
||||||
landmarkName = "compositeSpatialPhoto()"
|
landmarkName = "compositeSpatialPhoto()"
|
||||||
landmarkType = "7">
|
landmarkType = "7">
|
||||||
</BreakpointContent>
|
</BreakpointContent>
|
||||||
@ -556,32 +524,80 @@
|
|||||||
<BreakpointProxy
|
<BreakpointProxy
|
||||||
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
|
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
|
||||||
<BreakpointContent
|
<BreakpointContent
|
||||||
uuid = "F92BC10F-CFF7-4311-8706-052FD06BD96E"
|
uuid = "E6673529-7FC7-4709-A0A8-E857D68BA3D9"
|
||||||
shouldBeEnabled = "Yes"
|
shouldBeEnabled = "Yes"
|
||||||
ignoreCount = "0"
|
ignoreCount = "0"
|
||||||
continueAfterRunningActions = "No"
|
continueAfterRunningActions = "No"
|
||||||
filePath = "SwiftProject/Project/Controller/RecordingVideo/CCSpatialShootController/CCSpatialShootController+Generate.swift"
|
filePath = "SwiftProject/Project/Controller/CCHomeController.swift"
|
||||||
startingColumnNumber = "9223372036854775807"
|
startingColumnNumber = "9223372036854775807"
|
||||||
endingColumnNumber = "9223372036854775807"
|
endingColumnNumber = "9223372036854775807"
|
||||||
startingLineNumber = "252"
|
startingLineNumber = "554"
|
||||||
endingLineNumber = "252"
|
endingLineNumber = "554"
|
||||||
landmarkName = "compositeSpatialPhoto()"
|
landmarkName = "gotoVideoTransformVC(url:asset:)"
|
||||||
landmarkType = "7">
|
landmarkType = "7">
|
||||||
</BreakpointContent>
|
</BreakpointContent>
|
||||||
</BreakpointProxy>
|
</BreakpointProxy>
|
||||||
<BreakpointProxy
|
<BreakpointProxy
|
||||||
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
|
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
|
||||||
<BreakpointContent
|
<BreakpointContent
|
||||||
uuid = "C6506EAA-0954-41A9-A944-2AFB157D551F"
|
uuid = "389BFC3B-B70F-492B-AA47-FD20BD63E8A7"
|
||||||
shouldBeEnabled = "Yes"
|
shouldBeEnabled = "Yes"
|
||||||
ignoreCount = "0"
|
ignoreCount = "0"
|
||||||
continueAfterRunningActions = "No"
|
continueAfterRunningActions = "No"
|
||||||
filePath = "SwiftProject/Project/Controller/RecordingVideo/CCSpatialShootController/CCSpatialShootController+Generate.swift"
|
filePath = "SwiftProject/Project/Controller/RecordingVideo/CCSpatialPhotoDisplayController/CCSpatialPhotoDisplayController.swift"
|
||||||
startingColumnNumber = "9223372036854775807"
|
startingColumnNumber = "9223372036854775807"
|
||||||
endingColumnNumber = "9223372036854775807"
|
endingColumnNumber = "9223372036854775807"
|
||||||
startingLineNumber = "259"
|
startingLineNumber = "628"
|
||||||
endingLineNumber = "259"
|
endingLineNumber = "628"
|
||||||
landmarkName = "compositeSpatialPhoto()"
|
landmarkName = "getOrientationAndResolutionSizeForVideo(asset:)"
|
||||||
|
landmarkType = "7">
|
||||||
|
</BreakpointContent>
|
||||||
|
</BreakpointProxy>
|
||||||
|
<BreakpointProxy
|
||||||
|
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
|
||||||
|
<BreakpointContent
|
||||||
|
uuid = "9CE84387-A6DC-4430-8EDF-1C90B157FB36"
|
||||||
|
shouldBeEnabled = "Yes"
|
||||||
|
ignoreCount = "0"
|
||||||
|
continueAfterRunningActions = "No"
|
||||||
|
filePath = "SwiftProject/Project/Controller/RecordingVideo/CCSpatialPhotoDisplayController/CCSpatialPhotoDisplayEx.swift"
|
||||||
|
startingColumnNumber = "9223372036854775807"
|
||||||
|
endingColumnNumber = "9223372036854775807"
|
||||||
|
startingLineNumber = "137"
|
||||||
|
endingLineNumber = "137"
|
||||||
|
landmarkName = "joinImages_red_blue(lciImage:rciImage:scale:rbImage:)"
|
||||||
|
landmarkType = "7">
|
||||||
|
</BreakpointContent>
|
||||||
|
</BreakpointProxy>
|
||||||
|
<BreakpointProxy
|
||||||
|
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
|
||||||
|
<BreakpointContent
|
||||||
|
uuid = "825FE654-2C40-4F76-B5D2-2EA14A75D54B"
|
||||||
|
shouldBeEnabled = "Yes"
|
||||||
|
ignoreCount = "0"
|
||||||
|
continueAfterRunningActions = "No"
|
||||||
|
filePath = "SwiftProject/Project/Controller/RecordingVideo/CCSpatialPhotoDisplayController/CCSpatialPhotoDisplayEx.swift"
|
||||||
|
startingColumnNumber = "9223372036854775807"
|
||||||
|
endingColumnNumber = "9223372036854775807"
|
||||||
|
startingLineNumber = "93"
|
||||||
|
endingLineNumber = "93"
|
||||||
|
landmarkName = "joinImages_red_blue(lciImage:rciImage:scale:rbImage:)"
|
||||||
|
landmarkType = "7">
|
||||||
|
</BreakpointContent>
|
||||||
|
</BreakpointProxy>
|
||||||
|
<BreakpointProxy
|
||||||
|
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
|
||||||
|
<BreakpointContent
|
||||||
|
uuid = "8E29E821-B4B4-49F7-A00E-E82207F349CA"
|
||||||
|
shouldBeEnabled = "Yes"
|
||||||
|
ignoreCount = "0"
|
||||||
|
continueAfterRunningActions = "No"
|
||||||
|
filePath = "SwiftProject/Project/Controller/RecordingVideo/CCSpatialPhotoDisplayController/CCSpatialPhotoDisplayEx.swift"
|
||||||
|
startingColumnNumber = "9223372036854775807"
|
||||||
|
endingColumnNumber = "9223372036854775807"
|
||||||
|
startingLineNumber = "133"
|
||||||
|
endingLineNumber = "133"
|
||||||
|
landmarkName = "joinImages_red_blue(lciImage:rciImage:scale:rbImage:)"
|
||||||
landmarkType = "7">
|
landmarkType = "7">
|
||||||
</BreakpointContent>
|
</BreakpointContent>
|
||||||
</BreakpointProxy>
|
</BreakpointProxy>
|
||||||
|
|||||||
@ -9,105 +9,141 @@
|
|||||||
<key>isShown</key>
|
<key>isShown</key>
|
||||||
<false/>
|
<false/>
|
||||||
<key>orderHint</key>
|
<key>orderHint</key>
|
||||||
<integer>1</integer>
|
<integer>36</integer>
|
||||||
</dict>
|
</dict>
|
||||||
<key>Promises (Playground) 10.xcscheme</key>
|
<key>Promises (Playground) 10.xcscheme</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>isShown</key>
|
<key>isShown</key>
|
||||||
<false/>
|
<false/>
|
||||||
<key>orderHint</key>
|
<key>orderHint</key>
|
||||||
<integer>11</integer>
|
<integer>45</integer>
|
||||||
</dict>
|
</dict>
|
||||||
<key>Promises (Playground) 11.xcscheme</key>
|
<key>Promises (Playground) 11.xcscheme</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>isShown</key>
|
<key>isShown</key>
|
||||||
<false/>
|
<false/>
|
||||||
<key>orderHint</key>
|
<key>orderHint</key>
|
||||||
<integer>12</integer>
|
<integer>46</integer>
|
||||||
</dict>
|
</dict>
|
||||||
<key>Promises (Playground) 12.xcscheme</key>
|
<key>Promises (Playground) 12.xcscheme</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>isShown</key>
|
<key>isShown</key>
|
||||||
<false/>
|
<false/>
|
||||||
<key>orderHint</key>
|
<key>orderHint</key>
|
||||||
<integer>47</integer>
|
<integer>48</integer>
|
||||||
</dict>
|
</dict>
|
||||||
<key>Promises (Playground) 13.xcscheme</key>
|
<key>Promises (Playground) 13.xcscheme</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>isShown</key>
|
<key>isShown</key>
|
||||||
<false/>
|
<false/>
|
||||||
<key>orderHint</key>
|
<key>orderHint</key>
|
||||||
<integer>48</integer>
|
<integer>49</integer>
|
||||||
</dict>
|
</dict>
|
||||||
<key>Promises (Playground) 14.xcscheme</key>
|
<key>Promises (Playground) 14.xcscheme</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>isShown</key>
|
<key>isShown</key>
|
||||||
<false/>
|
<false/>
|
||||||
<key>orderHint</key>
|
<key>orderHint</key>
|
||||||
<integer>49</integer>
|
<integer>50</integer>
|
||||||
|
</dict>
|
||||||
|
<key>Promises (Playground) 15.xcscheme</key>
|
||||||
|
<dict>
|
||||||
|
<key>orderHint</key>
|
||||||
|
<integer>47</integer>
|
||||||
|
</dict>
|
||||||
|
<key>Promises (Playground) 16.xcscheme</key>
|
||||||
|
<dict>
|
||||||
|
<key>orderHint</key>
|
||||||
|
<integer>51</integer>
|
||||||
|
</dict>
|
||||||
|
<key>Promises (Playground) 17.xcscheme</key>
|
||||||
|
<dict>
|
||||||
|
<key>orderHint</key>
|
||||||
|
<integer>52</integer>
|
||||||
|
</dict>
|
||||||
|
<key>Promises (Playground) 18.xcscheme</key>
|
||||||
|
<dict>
|
||||||
|
<key>isShown</key>
|
||||||
|
<false/>
|
||||||
|
<key>orderHint</key>
|
||||||
|
<integer>53</integer>
|
||||||
|
</dict>
|
||||||
|
<key>Promises (Playground) 19.xcscheme</key>
|
||||||
|
<dict>
|
||||||
|
<key>isShown</key>
|
||||||
|
<false/>
|
||||||
|
<key>orderHint</key>
|
||||||
|
<integer>54</integer>
|
||||||
</dict>
|
</dict>
|
||||||
<key>Promises (Playground) 2.xcscheme</key>
|
<key>Promises (Playground) 2.xcscheme</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>isShown</key>
|
<key>isShown</key>
|
||||||
<false/>
|
<false/>
|
||||||
<key>orderHint</key>
|
<key>orderHint</key>
|
||||||
<integer>2</integer>
|
<integer>37</integer>
|
||||||
|
</dict>
|
||||||
|
<key>Promises (Playground) 20.xcscheme</key>
|
||||||
|
<dict>
|
||||||
|
<key>isShown</key>
|
||||||
|
<false/>
|
||||||
|
<key>orderHint</key>
|
||||||
|
<integer>55</integer>
|
||||||
</dict>
|
</dict>
|
||||||
<key>Promises (Playground) 3.xcscheme</key>
|
<key>Promises (Playground) 3.xcscheme</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>isShown</key>
|
<key>isShown</key>
|
||||||
<false/>
|
<false/>
|
||||||
<key>orderHint</key>
|
<key>orderHint</key>
|
||||||
<integer>3</integer>
|
<integer>38</integer>
|
||||||
</dict>
|
</dict>
|
||||||
<key>Promises (Playground) 4.xcscheme</key>
|
<key>Promises (Playground) 4.xcscheme</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>isShown</key>
|
<key>isShown</key>
|
||||||
<false/>
|
<false/>
|
||||||
<key>orderHint</key>
|
<key>orderHint</key>
|
||||||
<integer>4</integer>
|
<integer>39</integer>
|
||||||
</dict>
|
</dict>
|
||||||
<key>Promises (Playground) 5.xcscheme</key>
|
<key>Promises (Playground) 5.xcscheme</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>isShown</key>
|
<key>isShown</key>
|
||||||
<false/>
|
<false/>
|
||||||
<key>orderHint</key>
|
<key>orderHint</key>
|
||||||
<integer>5</integer>
|
<integer>40</integer>
|
||||||
</dict>
|
</dict>
|
||||||
<key>Promises (Playground) 6.xcscheme</key>
|
<key>Promises (Playground) 6.xcscheme</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>isShown</key>
|
<key>isShown</key>
|
||||||
<false/>
|
<false/>
|
||||||
<key>orderHint</key>
|
<key>orderHint</key>
|
||||||
<integer>6</integer>
|
<integer>41</integer>
|
||||||
</dict>
|
</dict>
|
||||||
<key>Promises (Playground) 7.xcscheme</key>
|
<key>Promises (Playground) 7.xcscheme</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>isShown</key>
|
<key>isShown</key>
|
||||||
<false/>
|
<false/>
|
||||||
<key>orderHint</key>
|
<key>orderHint</key>
|
||||||
<integer>7</integer>
|
<integer>42</integer>
|
||||||
</dict>
|
</dict>
|
||||||
<key>Promises (Playground) 8.xcscheme</key>
|
<key>Promises (Playground) 8.xcscheme</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>isShown</key>
|
<key>isShown</key>
|
||||||
<false/>
|
<false/>
|
||||||
<key>orderHint</key>
|
<key>orderHint</key>
|
||||||
<integer>8</integer>
|
<integer>43</integer>
|
||||||
</dict>
|
</dict>
|
||||||
<key>Promises (Playground) 9.xcscheme</key>
|
<key>Promises (Playground) 9.xcscheme</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>isShown</key>
|
<key>isShown</key>
|
||||||
<false/>
|
<false/>
|
||||||
<key>orderHint</key>
|
<key>orderHint</key>
|
||||||
<integer>10</integer>
|
<integer>44</integer>
|
||||||
</dict>
|
</dict>
|
||||||
<key>Promises (Playground).xcscheme</key>
|
<key>Promises (Playground).xcscheme</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>isShown</key>
|
<key>isShown</key>
|
||||||
<false/>
|
<false/>
|
||||||
<key>orderHint</key>
|
<key>orderHint</key>
|
||||||
<integer>0</integer>
|
<integer>35</integer>
|
||||||
</dict>
|
</dict>
|
||||||
</dict>
|
</dict>
|
||||||
</dict>
|
</dict>
|
||||||
|
|||||||
@ -546,8 +546,7 @@ class CCSpatialPhotoDisplayController: BaseController {
|
|||||||
}else if(selectedIndex == 2){//红蓝立体
|
}else if(selectedIndex == 2){//红蓝立体
|
||||||
|
|
||||||
var ri = joinImages_red_blue(lciImage: lciImage, rciImage: rciImage, scale: currentScale,rbImage: redBlueImage)
|
var ri = joinImages_red_blue(lciImage: lciImage, rciImage: rciImage, scale: currentScale,rbImage: redBlueImage)
|
||||||
// var ri = UIImage(ciImage: lastImg)
|
// ri = ri.getUpImg(imgOrigOritentation: self.imgOritentation )
|
||||||
ri = ri.getUpImg(imgOrigOritentation: self.imgOritentation )
|
|
||||||
redBlueImage = ri
|
redBlueImage = ri
|
||||||
self.mImgView.image = ri
|
self.mImgView.image = ri
|
||||||
|
|
||||||
|
|||||||
@ -158,10 +158,10 @@ extension CCSpatialPhotoDisplayController {
|
|||||||
let edS = 20 //比列
|
let edS = 20 //比列
|
||||||
|
|
||||||
var left = UIImage(ciImage: leftImage )
|
var left = UIImage(ciImage: leftImage )
|
||||||
left = left.getUpImg(imgOrigOritentation: imgOritentation)
|
// left = left.getUpImg(imgOrigOritentation: imgOritentation)
|
||||||
|
|
||||||
var right = UIImage(ciImage: rightImage )
|
var right = UIImage(ciImage: rightImage )
|
||||||
right = right.getUpImg(imgOrigOritentation: imgOritentation)
|
// right = right.getUpImg(imgOrigOritentation: imgOritentation)
|
||||||
|
|
||||||
//获取缩放图片
|
//获取缩放图片
|
||||||
let (n_left,n_left_size) = getImgWithScale(image: left, scale: scale)
|
let (n_left,n_left_size) = getImgWithScale(image: left, scale: scale)
|
||||||
|
|||||||
@ -18,11 +18,13 @@ extension CCSpatialShootController: AVCaptureAudioDataOutputSampleBufferDelegate
|
|||||||
|
|
||||||
//视频、音频回调
|
//视频、音频回调
|
||||||
func captureOutput(_ output: AVCaptureOutput, didOutput sampleBuffer: CMSampleBuffer, from connection: AVCaptureConnection) {
|
func captureOutput(_ output: AVCaptureOutput, didOutput sampleBuffer: CMSampleBuffer, from connection: AVCaptureConnection) {
|
||||||
if shootingMode == .CCShootingMode_Camera && self.isTakePhoto{
|
if shootingMode == .CCShootingMode_Camera {
|
||||||
takePhotoSemaphore.wait()
|
takePhotoSemaphore.wait()
|
||||||
|
if self.isTakePhoto {
|
||||||
print("xxsddd:\(Thread.current)")
|
print("xxsddd:\(Thread.current)")
|
||||||
|
|
||||||
if output == wideAngleCameraVideoDataOutput && self.isTakePhoto_wideCamera {
|
if output == wideAngleCameraVideoDataOutput && self.isTakePhoto_wideCamera {
|
||||||
if let firstFrame = imageFromSampleBuffer(sampleBuffer: sampleBuffer) {
|
if let firstFrame = imageFromSampleBuffer(sampleBuffer: sampleBuffer,orientation: connection.videoOrientation) {
|
||||||
imgs.add(firstFrame)
|
imgs.add(firstFrame)
|
||||||
self.isTakePhoto_wideCamera = false
|
self.isTakePhoto_wideCamera = false
|
||||||
}
|
}
|
||||||
@ -30,7 +32,7 @@ extension CCSpatialShootController: AVCaptureAudioDataOutputSampleBufferDelegate
|
|||||||
print("wide Angle firstframe is lost....")
|
print("wide Angle firstframe is lost....")
|
||||||
}
|
}
|
||||||
} else if output == ultraWideCameraVideoDataOutput && self.isTakePhoto_ultraCamera{
|
} else if output == ultraWideCameraVideoDataOutput && self.isTakePhoto_ultraCamera{
|
||||||
if let firstFrame = imageFromSampleBuffer(sampleBuffer: sampleBuffer) {
|
if let firstFrame = imageFromSampleBuffer(sampleBuffer: sampleBuffer,orientation: connection.videoOrientation) {
|
||||||
imgs.add(firstFrame)
|
imgs.add(firstFrame)
|
||||||
self.isTakePhoto_ultraCamera = false
|
self.isTakePhoto_ultraCamera = false
|
||||||
}
|
}
|
||||||
@ -48,6 +50,8 @@ extension CCSpatialShootController: AVCaptureAudioDataOutputSampleBufferDelegate
|
|||||||
else {
|
else {
|
||||||
print("images 少于2张....")
|
print("images 少于2张....")
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
takePhotoSemaphore.signal()
|
takePhotoSemaphore.signal()
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -80,24 +84,28 @@ extension CCSpatialShootController: AVCaptureAudioDataOutputSampleBufferDelegate
|
|||||||
|
|
||||||
|
|
||||||
//通过samplebuffer生成uiimage
|
//通过samplebuffer生成uiimage
|
||||||
func imageFromSampleBuffer(sampleBuffer: CMSampleBuffer) -> UIImage? {
|
func imageFromSampleBuffer(sampleBuffer: CMSampleBuffer,orientation:AVCaptureVideoOrientation ) -> UIImage? {
|
||||||
// 获取像素缓冲区
|
|
||||||
guard let imageBuffer = CMSampleBufferGetImageBuffer(sampleBuffer) else { return nil }
|
guard let imageBuffer = CMSampleBufferGetImageBuffer(sampleBuffer) else { return nil }
|
||||||
|
let ciImage = CIImage(cvPixelBuffer: imageBuffer)
|
||||||
// 创建CoreImage图像
|
let temporaryContext = CIContext(options: nil)
|
||||||
let ciImage = CIImage(cvImageBuffer: imageBuffer)
|
guard let cgImage = temporaryContext.createCGImage(ciImage, from: ciImage.extent) else { return nil }
|
||||||
|
print("rect:\(ciImage.extent)")
|
||||||
// 将CIImage转换为CGImage
|
let image = UIImage(cgImage: cgImage, scale: UIScreen.main.scale, orientation: getImgOrientation(orientation: orientation))
|
||||||
if let cgImage = CIContext(options: nil).createCGImage(ciImage, from: ciImage.extent) {
|
|
||||||
// 创建UIImage
|
|
||||||
let image = UIImage(cgImage: cgImage)
|
|
||||||
return image
|
return image
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil
|
func getImgOrientation(orientation:AVCaptureVideoOrientation )->UIImage.Orientation {
|
||||||
|
switch orientation {
|
||||||
|
case .portrait:
|
||||||
|
return .up
|
||||||
|
case .portraitUpsideDown:
|
||||||
|
return .down
|
||||||
|
case .landscapeRight:
|
||||||
|
return .right
|
||||||
|
case .landscapeLeft:
|
||||||
|
return .left
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -184,7 +192,7 @@ extension CCSpatialShootController: AVCaptureAudioDataOutputSampleBufferDelegate
|
|||||||
let url = URL.documentsDirectory.appending(path:"aaa12.HEIC")
|
let url = URL.documentsDirectory.appending(path:"aaa12.HEIC")
|
||||||
let destination = CGImageDestinationCreateWithURL(url as CFURL, UTType.heic.identifier as CFString, 2, nil)!
|
let destination = CGImageDestinationCreateWithURL(url as CFURL, UTType.heic.identifier as CFString, 2, nil)!
|
||||||
var oo = imageCGImagePropertyOrientation.rawValue
|
var oo = imageCGImagePropertyOrientation.rawValue
|
||||||
let orientation_cf = CFNumberCreate(nil, CFNumberType.intType, &oo)
|
// let orientation_cf = CFNumberCreate(nil, CFNumberType.intType, &oo)
|
||||||
let properties1 = [
|
let properties1 = [
|
||||||
kCGImagePropertyGroups: [
|
kCGImagePropertyGroups: [
|
||||||
kCGImagePropertyGroupIndex: 0,
|
kCGImagePropertyGroupIndex: 0,
|
||||||
@ -192,11 +200,11 @@ extension CCSpatialShootController: AVCaptureAudioDataOutputSampleBufferDelegate
|
|||||||
kCGImagePropertyGroupImageIndexLeft: 0,
|
kCGImagePropertyGroupImageIndexLeft: 0,
|
||||||
kCGImagePropertyGroupImageIndexRight: 1,
|
kCGImagePropertyGroupImageIndexRight: 1,
|
||||||
],
|
],
|
||||||
kCGImagePropertyTIFFDictionary:[
|
// kCGImagePropertyTIFFDictionary:[
|
||||||
kCGImagePropertyOrientation:orientation_cf,
|
// kCGImagePropertyOrientation:orientation_cf,
|
||||||
],
|
// ],
|
||||||
|
//
|
||||||
kCGImagePropertyOrientation:orientation_cf as Any,
|
// kCGImagePropertyOrientation:orientation_cf as Any,
|
||||||
kCGImagePropertyHEIFDictionary: [
|
kCGImagePropertyHEIFDictionary: [
|
||||||
kIIOMetadata_CameraExtrinsicsKey: [
|
kIIOMetadata_CameraExtrinsicsKey: [
|
||||||
kIIOCameraExtrinsics_CoordinateSystemID: 0,
|
kIIOCameraExtrinsics_CoordinateSystemID: 0,
|
||||||
@ -220,10 +228,10 @@ extension CCSpatialShootController: AVCaptureAudioDataOutputSampleBufferDelegate
|
|||||||
kCGImagePropertyGroupImageIndexLeft: 0,
|
kCGImagePropertyGroupImageIndexLeft: 0,
|
||||||
kCGImagePropertyGroupImageIndexRight: 1,
|
kCGImagePropertyGroupImageIndexRight: 1,
|
||||||
],
|
],
|
||||||
kCGImagePropertyTIFFDictionary:[
|
// kCGImagePropertyTIFFDictionary:[
|
||||||
kCGImagePropertyOrientation:orientation_cf,
|
// kCGImagePropertyOrientation:orientation_cf,
|
||||||
],
|
// ],
|
||||||
kCGImagePropertyOrientation:orientation_cf as Any,
|
// kCGImagePropertyOrientation:orientation_cf as Any,
|
||||||
|
|
||||||
kCGImagePropertyHEIFDictionary: [
|
kCGImagePropertyHEIFDictionary: [
|
||||||
kIIOMetadata_CameraExtrinsicsKey: [
|
kIIOMetadata_CameraExtrinsicsKey: [
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user