The most advanced Camera framework in Swift CameraEngine is an iOS camera engine library that allows easy integration of special capture features and camera customization in your iOS app.
:relaxed: | Support iOS8 - iOS9 :triangular_ruler: | Support orientation device :checkered_flag: | Fast capture :camera: | Photo capture :movie_camera: | Video capture :chart_with_upwards_trend: | quality settings presset video / photo capture :raising_hand: | switch device (front, back) :bulb: | flash mode management :flashlight: | torch mode management :mag_right: | focus mode management :bowtie: | detection face, barecode, and qrcode :rocket: | GIF encoder
To add the Framework, you can also create a workspace for your project, then add the CameraEngine.xcodeproj, and the CameraEngine, then you should be able to compile the framework, and import it in your app project. CameraEngine supports swift3, see the development branch for a swift 3 integration.
First let's init and start the camera session. You can call that in viewDidLoad, or in appDelegate. override func viewDidLoad() { super.viewDidLoad() self.cameraEngine.startSession() } Next time to display the preview layer override func viewDidLayoutSubviews() { let layer = self.cameraEngine.previewLayer
layer.frame = self.view.bounds self.view.layer.insertSublayer(layer, atIndex: 0) self.view.layer.masksToBounds = true }
Capture a photo self.cameraEngine.capturePhoto { (image: UIImage?, error: NSError?) -> (Void) in //get the picture tooked in the image } Capture a video private func startRecording() { guard let url = CameraEngineFileManager.documentPath("video.mp4") else { return }
self.cameraEngine.startRecordingVideo(url, blockCompletion: { (url, error) -> (Void) in }) } private func stopRecording() { self.cameraEngine.stopRecordingVideo() }
Generate animated image GIF guard let url = CameraEngineFileManager.documentPath("animated.gif") else { return } self.cameraEngine.createGif(url, frames: self.frames, delayTime: 0.1, completionGif: { (success, url) -> (Void) in //Do some crazy stuff here })
:wrench: configurations
CameraEngine, allows you to set some parameters, such as management of flash, torch and focus. But also on the quality of the media, which also has an impact on the size of the output file. Flash self.cameraEngine.flashMode = .On self.cameraEngine.flashMode = .Off self.cameraEngine.flashMode = .Auto Torch self.cameraEngine.torchMode = .On self.cameraEngine.torchMode = .Off self.cameraEngine.torchMode = .Auto Focus .Locked | means the lens is at a fixed position .AutoFocus | means setting this will cause the camera to focus once automatically, and then return back to Locked .ContinuousAutoFocus | means the camera will automatically refocus on the center of the frame when the scene changes self.cameraEngine.cameraFocus = .Locked self.cameraEngine.cameraFocus = .AutoFocus self.cameraEngine.cameraFocus = .ContinuousAutoFocus Camera presset Photo self.cameraEngine.sessionPresset = .Low self.cameraEngine.sessionPresset = .Medium self.cameraEngine.sessionPresset = .High Camera presset Video self.cameraEngine.videoEncoderPresset = .Preset640x480 self.cameraEngine.videoEncoderPresset = .Preset960x540 self.cameraEngine.videoEncoderPresset = .Preset1280x720 self.cameraEngine.videoEncoderPresset = .Preset1920x1080 self.cameraEngine.videoEncoderPresset = .Preset3840x2160
:eyes: Object detection
CameraEngine can detect faces, QRcodes, or barcode. It will return all metadata on each frame, when it detects something. To exploit you whenever you want later. Set the detection mode self.cameraEngine.metadataDetection = .Face self.cameraEngine.metadataDetection = .QRCode self.cameraEngine.metadataDetection = .BareCode self.cameraEngine.metadataDetection = .None //disable the detection exploiting face detection self.cameraEngine.blockCompletionFaceDetection = { faceObject in let frameFace = (faceObject as AVMetadataObject).bounds self.displayLayerDetection(frame: frameFace) } exploiting code detection (barecode and QRCode) self.cameraEngine.blockCompletionCodeDetection = { codeObject in let valueCode = codeObject.stringValue let frameCode = (codeObject as AVMetadataObject).bounds self.displayLayerDetection(frame: frameCode) }
:car::dash: Example
You will find a sample project, which implements all the features of CameraEngine, with an interface that allows you to test and play with the settings. To run the example projet, run
pod install
, because it uses the current prod version of CameraEngine.Contributors
Date | Time |
---|---|
June 14, 2023 (Wednesday) | 09:30 AM - 04:30 PM |
June 28, 2023 (Wednesday) | 09:30 AM - 04:30 PM |
July 12, 2023 (Wednesday) | 09:30 AM - 04:30 PM |
July 26, 2023 (Wednesday) | 09:30 AM - 04:30 PM |
August 9, 2023 (Wednesday) | 09:30 AM - 04:30 PM |
August 23, 2023 (Wednesday) | 09:30 AM - 04:30 PM |