UIImagePickerController的使用

jopen 10年前

通过UIImagePickerController获取本地图片,视频以及调用手机摄像头拍摄

获取相册图片

    //创建imgPickerCtrl      UIImagePickerController *imgPickerCtrl = [[UIImagePickerController alloc] init];            //设置代理      imgPickerCtrl.delegate = self;      //设置资源类型      imgPickerCtrl.sourceType = UIImagePickerControllerSourceTypeSavedPhotosAlbum;      //弹出模态      [self presentViewController:imgPickerCtrl animated:YES completion:nil];


调用摄像头拍摄照片

        //判断一下是否支持拍摄      BOOL isAvailable = [UIImagePickerController isCameraDeviceAvailable:UIImagePickerControllerCameraDeviceRear];      if (!isAvailable) {     //如果不支持,弹出提示框          UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"提示" message:@"当前没有可用摄像头" delegate:nil cancelButtonTitle:@"确定" otherButtonTitles:nil, nil];          [alertView show];                    return;      }      //支持就创建UIImagePickerController      UIImagePickerController *pickerCtrl = [[UIImagePickerController alloc] init];            //设置代理      pickerCtrl.delegate = self;            //设置sourceType      pickerCtrl.sourceType = UIImagePickerControllerSourceTypeCamera;            [self presentViewController:pickerCtrl animated:YES completion:nil];


获取本地视频

    UIImagePickerController *imgPickerCtrl = [[UIImagePickerController alloc] init];            imgPickerCtrl.delegate = self;            imgPickerCtrl.sourceType = UIImagePickerControllerSourceTypeSavedPhotosAlbum;            //自定媒体类型      imgPickerCtrl.mediaTypes = @[@"public.movie"];            [self presentViewController:imgPickerCtrl animated:YES completion:nil];


调用摄像头拍摄视频

UIImagePickerController *imgPickerCtrl = [[UIImagePickerController alloc] init];            imgPickerCtrl.delegate = self;            imgPickerCtrl.sourceType = UIImagePickerControllerSourceTypeCamera;            imgPickerCtrl.mediaTypes = @[@"public.movie"];            [self presentViewController:imgPickerCtrl animated:YES completion:nil];




实现代理方法

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {        NSLog(@"info:%@",info);           NSString *mediaType = [info objectForKey:UIImagePickerControllerMediaType];      if ([mediaType isEqualToString:@"public.image"]) {          //获取选中的图片          UIImage *img = [info objectForKey:UIImagePickerControllerOriginalImage];          _imgView.image = img;                    //如果图片是通过camera拍摄的,则保存到本地          if (picker.sourceType == UIImagePickerControllerSourceTypeCamera) {              //将图片写到本地              UIImageWriteToSavedPhotosAlbum(img, self , @selector(image:didFinishSavingWithError:contextInfo:), nil);          }      }else if ([mediaType isEqualToString:@"public.movie"]) {                //获取视图的url          NSURL *url = [info objectForKey:UIImagePickerControllerReferenceURL];                    //播放器播放            }      //关闭当前的模态视图      [self dismissViewControllerAnimated:YES completion:nil];  }    //图片保存成功后调用的方法  - (void)image:(UIImage *)image didFinishSavingWithError:(NSError *)error contextInfo:(void *)contextInfo {        NSLog(@"图片保存成功");        }