相机、相册的使用

  • 注:本文只展示相机、相册的基本用法
//遵循代理
<UIImagePickerControllerDelegate, UINavigationControllerDelegate>


//设置变量
UIImagePickerController *_imagePickerController;//调取系统相机、相册


#pragma mark - 相机、相册相关
//创建_imagePickerController
- (void) createImagePickerController {
    if (!_imagePickerController) {
        _imagePickerController = [[UIImagePickerController alloc] init];
        _imagePickerController.delegate = self;
        _imagePickerController.modalTransitionStyle = UIModalTransitionStyleCoverVertical;
        _imagePickerController.mediaTypes = @[(NSString *)kUTTypeMovie];//图片是:kUTTypeImage
        _imagePickerController.allowsEditing = YES;
    }
}
//从摄像头获取视频(或图片)
- (void)selectImageFromCamera
{
    _imagePickerController.sourceType = UIImagePickerControllerSourceTypeCamera;

    //下面是video需要设置的属性
    _imagePickerController.videoMaximumDuration = 30;//录制视频时长,默认10s
    _imagePickerController.videoQuality = UIImagePickerControllerQualityTypeMedium;//视频上传质量
    _imagePickerController.cameraCaptureMode = UIImagePickerControllerCameraCaptureModeVideo;//设置摄像头模式(拍照,录制视频)为录像模式

    [self presentViewController:_imagePickerController animated:YES completion:nil];
}
//从相册获取视频(或图片)
- (void)selectImageFromAlbum
{
    _imagePickerController.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
    [self presentViewController:_imagePickerController animated:YES completion:nil];
}
//获取资源成功代理方法(适用获取所有媒体资源,只需判断资源类型)
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary<NSString *,id> *)info{
    NSString *mediaType=[info objectForKey:UIImagePickerControllerMediaType];
    //判断资源类型
    if ([mediaType isEqualToString:(NSString *)kUTTypeImage]){
        //如果是图片
        UIImage * image = info[UIImagePickerControllerEditedImage];
        //压缩图片
        NSData *fileData = UIImageJPEGRepresentation(image, 1.0);
        //上传图片
        //[self uploadImageWithData:fileData];
    }else{
        //如果是视频
        NSURL *url = info[UIImagePickerControllerMediaURL];
        NSData *videoData = [NSData dataWithContentsOfURL:url];
        //视频上传
        //[self uploadVideoWithData:videoData];
    }
    [self dismissViewControllerAnimated:YES completion:nil];
}
//“取消”操作代理方法
- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker {
    [self dismissViewControllerAnimated:YES completion:nil];
}

参考文章:
https://www.jianshu.com/p/e70a184d1f32

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 177,081评论 25 709
  • # Python 资源大全中文版 我想很多程序员应该记得 GitHub 上有一个 Awesome - XXX 系列...
    aimaile阅读 26,774评论 6 427
  • > 肯屏蔽杂音去刻意练习,总有让你得瑟的机会 ## 一 2009年7月13日,下午3点23分,广仁大学校园,暑假第...
    朱利叶斯李阅读 3,483评论 0 0
  • 付鑫在4乘100米接力赛中摔倒了,爬起来,奋力追赶,完成了自己的任务。 妈妈被你顽强的精神感动,儿子,好样的,是个...
    福志水产干货阅读 2,350评论 3 2

友情链接更多精彩内容