目前我在UIImagePickerController
上使用自定义覆盖图,调用takePicture()
来捕获图像。但是,调用代理方法didFinishPickingMediaWithInfo
需要几秒钟的时间。我听说过使用AVCaptureSession
来控制相机。这会让我获得更快的拍摄速度(类似于Snapchat)吗?还是有,我可以AVCaptureSession vs UIImagePickerController速度
感谢
编辑
我执行我的图像采集如下任何其他方式。
首先我初始化一个UIImagePickerController,使用称为CustomCameraOverlayView
的UIView子类作为叠加视图,并将其呈现在模态视图中。 CustomCameraOverlayView
的代表设置为UIImagePickerControllerDelegate
(个人),因此我可以拨打CustomCameraOverlayView
中的takePicture
。
imagePickerController = UIImagePickerController()
if UIImagePickerController.isSourceTypeAvailable(.Camera) {
imagePickerController.sourceType = UIImagePickerControllerSourceType.Camera
imagePickerController.cameraDevice = UIImagePickerControllerCameraDevice.Rear
imagePickerController.editing = true
imagePickerController.delegate = self
imagePickerController.showsCameraControls = false
var customCameraOverlayView = CustomCameraOverlayView()
customCameraOverlayView.delegate = self
imagePickerController.cameraOverlayView = customCameraOverlayView
imagePickerController.cameraOverlayView!.frame = self.view.frame
var screenBounds: CGSize = UIScreen.mainScreen().bounds.size
var imageHeight = (screenBounds.width/3)*4
var scale = screenBounds.height/imageHeight
imagePickerController.cameraViewTransform = CGAffineTransformConcat(CGAffineTransformMakeScale(scale, scale), CGAffineTransformMakeTranslation(0, (screenBounds.height - imageHeight)/2))
self.presentViewController(imagePickerController, animated: true, completion: nil)
}
然后CustomCameraOverlayView
里面我从IB到我的代码“拍照”按钮,设置了行动。它发回消息给代表拍摄照片:
@IBAction func takePicture(sender: UIButton) {
delegate!.imagePickerController.takePicture()
}
几秒钟后,调用委托方法。什么可能会减慢我的执行速度?
嗯有趣,我已经更新了我的答案,包括编码。 – Tometoyou