IOS:Camera的特性分析与使用

Camera是IOS中非常重要的一个信息获取途径。下面我们主要从硬件特性以及软件特性两个方面来看看Canera的使用,先来看看软件上我们使用Camera都能干点什么。

先来看看下面一张图:


相机软件部分主要介绍两个部分:

<1> UIImagePickerController

<2> AVCapture

AVCapture的结构和使用在前面的博客中已经介绍了,这里先来看看UIImagePickerController的相关特点。我们使用UIImagePickerController可以做点什么?

<1> UIImagePickerController

(1)输入源设置:相机、照片库

(2)设置前后摄像头

(3)设置视频质量

(4)设置照片、视频模式

(5)设置闪光灯打开方式

(6)视频编辑

(7)自定义摄像界面

拍照部分:可以参考下面代码:

        self.imagePicker = [[UIImagePickerController alloc] init];

        self.imagePicker.delegate = self;//设置委托代理

        self.imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera;

        self.imagePicker.videoQuality = UIImagePickerControllerQualityTypeIFrame1280x720;

//        self.imagePicker.cameraCaptureMode = UIImagePickerControllerCameraCaptureModeVideo;

        self.imagePicker.cameraFlashMode = UIImagePickerControllerCameraFlashModeOn;

        self.imagePicker.cameraDevice = UIImagePickerControllerCameraDeviceFront;

        self.imagePicker.allowsEditing = YES;//设置UIImagePickerController是否允许编辑

相机属性设置之后,通过模态势图将相机打开:     

[self presentViewController:self.imagePicker animated:YES completion:NULL];

在完成以上设置之后就可以在回调方法中拿到我们拍摄的、或者从照片库中选取的图片:

-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info

{

//  获取可编辑Image   

    UIImage *image = [info objectForKey:UIImagePickerControllerEditedImage];

    UIImageWriteToSavedPhotosAlbum (image, nil, nil , nil);//保存到本地相册

    self.imageView.image = image;

    self.imageView.contentMode = UIViewContentModeScaleAspectFill;//照片的显示方式是否全屏

    [self dismissViewControllerAnimated:YES completion:NULL];//模态视图退出

}

可以将照片保存起来,也可以对照片进行处理添加特效等等。。。

视频录制部分:

视频录制设置和视频保存与拍照方法有些不一样,参考代码如下:

//      设置媒体类型,从当前摄像头获取媒体。

        self.imagePicker.mediaTypes = [UIImagePickerController                   availableMediaTypesForSourceType:UIImagePickerControllerSourceTypeCamera];

-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info

{

//  检测当前是 拍摄照片还是拍摄视频

    NSString *mediaType = [info objectForKey: UIImagePickerControllerMediaType];

    if (CFStringCompare((__bridge CFStringRef) mediaType, kUTTypeMovie, 0) == kCFCompareEqualTo)

    {

//      保存视频,所选择视频的来源地址。

        NSString *moviePath = [[info objectForKey: UIImagePickerControllerMediaURL] path];

        

        if (UIVideoAtPathIsCompatibleWithSavedPhotosAlbum (moviePath))

        {

            UISaveVideoAtPathToSavedPhotosAlbum (moviePath, nil, nil, nil);

        }

    }

    [self dismissViewControllerAnimated:YES completion:NULL];

}

自定义相机拍摄界面:

这个功能在相机上用的也非常的多,比如我们经常需要定制个性化的相机。比如美颜相机拍照功能等等。。。

核心代码:

self.imagePicker.cameraOverlayView = [自定义UIView ,在UIView上设置各种按钮];

例如:闪光灯按钮:

    UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 280, 480)];

    view.backgroundColor = [UIColor clearColor];

    

    UIButton *flashButton = [[UIButton alloc] initWithFrame:CGRectMake(10, 10, 120, 44)];

    flashButton.backgroundColor = [UIColor colorWithRed:.5 green:.5 blue:.5 alpha:.5];

    [flashButton setTitle:@"闪光灯" forState:UIControlStateNormal];

    [flashButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];

好了,写到这里篇幅已经有点长了, AVCapture 放到下一篇中,以免引起视觉疲劳 呵呵。



猜你喜欢

转载自blog.csdn.net/u014011807/article/details/46906301