Ich verwende Swift 3, Xcode 8.2.Swift 3 - Benutzerdefinierte Kameraansicht - zeigt das Standbild des Fotos nach dem Klick an
Ich habe eine benutzerdefinierte Kamera-Ansicht, die die Video-Feed-Fein und eine Schaltfläche, die ich als Shutter fungieren möchte angezeigt. Wenn der Benutzer auf die Schaltfläche tippt, möchte ich ein Bild aufnehmen und es wird auf dem Bildschirm angezeigt. (ZB wie ein Snapchat oder Facebook Messenger Artkamera Verhalten)
Hier ist mein Code:
import UIKit
import AVFoundation
class CameraVC: UIViewController, AVCapturePhotoCaptureDelegate {
// this is where the camera feed from the phone is going to be displayed
@IBOutlet var cameraView : UIView!
var shutterButton : UIButton = UIButton.init(type: .custom)
// manages capture activity and coordinates the flow of data from input devices to capture outputs.
var capture_session = AVCaptureSession()
// a capture output for use in workflows related to still photography.
var session_output = AVCapturePhotoOutput()
// preview layer that we will have on our view so users can see the photo we took
var preview_layer = AVCaptureVideoPreviewLayer()
// still picture image is what we show as the picture taken, frozen on the screen
var still_picture_image : UIImage!
... //more code in viewWillAppear that sets up the camera feed
// called when the shutter button is pressed
func shutterButtonPressed() {
// get the actual video feed and take a photo from that feed
session_output.capturePhoto(with: AVCapturePhotoSettings.init(format: [AVVideoCodecKey : AVVideoCodecJPEG]), delegate: self as AVCapturePhotoCaptureDelegate)
}
func capture(_ captureOutput: AVCapturePhotoOutput, didFinishProcessingPhotoSampleBuffer photoSampleBuffer: CMSampleBuffer?, previewPhotoSampleBuffer: CMSampleBuffer?, resolvedSettings: AVCaptureResolvedPhotoSettings, bracketSettings: AVCaptureBracketedStillImageSettings?, error: Error?) {
// take the session output, get the buffer, and create an image from that buffer
if let sampleBuffer = photoSampleBuffer,
let previewBuffer = previewPhotoSampleBuffer,
let imageData = AVCapturePhotoOutput.jpegPhotoDataRepresentation(forJPEGSampleBuffer: sampleBuffer, previewPhotoSampleBuffer: previewBuffer) {
print("Here") // doesn't get here
}
}
Es scheint nicht „hier“ zu drucken, wenn Sie diesen Code ausgeführt wird, und ich kann jede Swift nicht finden 3 Tutorials zur Anzeige dieses Bildes. Ich schätze, ich möchte die imageData
nehmen und sie meiner still_picture_image
zuweisen und diese über den Kamera-Feed irgendwie überlagern.
Jede Hilfe oder ein Punkt in die richtige Richtung wäre eine große Hilfe.
EDIT
Nach dem folgenden meinem Code hinzufügen:
if let error = error {
print(error.localizedDescription)
}
Aber ich immer noch nicht jeder Fehler gedruckt werden.
Sie haben soeben einen UIImageView mit dem aufgenommenen hinzufügen könnten Bild richtig? –
Theoretisch, ja, aber das Wort "Here" wird nicht in meinem Code gedruckt, also scheint es nicht über diese 'if' Aussage hinauszukommen. – noblerare
Haben Sie 'captureSession? .startRunning()' aufgerufen? Hey, kannst du den Code in voller Länge posten? –