iOS以编程方式拍照

La *_*bla 28 xcode photo objective-c ios

我知道这是可能的,在一些应用程序中看到了这一点(iGotYa我相信最着名的).我知道如何设置拍照,保存和一切的一切.但是如何以编程方式完成呢?只需让用户点击一些按钮(在常规视图控制器中),它就会自动使用前置摄像头拍照并保存(或者不是,只是将其作为UIImage)

谢谢!

Poc*_*chi 24

这很简单,只需使用AVFoundation参考指南:

https://developer.apple.com/library/ios/#documentation/AudioVideo/Conceptual/AVFoundationPG/Articles/04_MediaCapture.html

如果您不希望用户看到预览输入,您可以跳过代码的设置预览图层部分.

编辑:更详细.

1)使用AVFoundation设置捕获配置.

  • 将相机输入设置为正面,关闭闪光灯等.

2)您跳过设置视频预览图层的部分.

3)只要您想拍摄照片,就可以调用captureStillImageAsynchronouslyFromConnection:completionHandler:方法.

注意:如果您不想听到闪光灯,那么您可能会侵犯某些国家/地区的用户权限(例如日本).我知道这样做的一个解决方法是捕获视频帧(不触发闪存).


Gra*_*eph 15

你也可以在没有AVFoundation的情况下做到这一点,在我看来,只使用UIImagePickerController实现它是一种更简单的方法.有3个条件:

  1. 显然该设备需要一台摄像头
  2. 您必须隐藏相机控件
  3. 然后只需使用UIImagePickerController中的takePicture方法

下面是一个简单的例子,你通常会在按下按钮后触发

- (IBAction)takePhoto:(id)sender 
{
    UIImagePickerController *picker = [[UIImagePickerController alloc] init];
    picker.delegate = self;
    picker.sourceType = UIImagePickerControllerSourceTypeCamera;
    picker.cameraDevice = UIImagePickerControllerCameraDeviceFront;
    picker.showsCameraControls = NO;
    [self presentViewController:picker animated:YES
                     completion:^ {
                         [picker takePicture];
                     }];
}
Run Code Online (Sandbox Code Playgroud)