调起手机相机拍照和手机相册选取多张图片

一、调起手机相机

1.设置相机相册权限

打开相机相册权限

2.添加代理

UINavigationControllerDelegate,UIImagePickerControllerDelegate

3.设置代理

//调起相机
- (void)goCamara{
    UIImagePickerController *picker = [[UIImagePickerController alloc]init];
    picker.delegate = self;
    picker.allowsEditing = YES;//可编辑
    //判断是否可以打开相机
    if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) {
        picker.sourceType = UIImagePickerControllerSourceTypeCamera;
        [self presentViewController:picker animated:YES completion:nil];
    }else{
        NSLog(@"没有摄像头");
    }
}

4.实现代理方法

#pragma mark - UIImagePickerControllerDelegate 使用相机delegate
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary<UIImagePickerControllerInfoKey,id> *)info{
    [picker dismissViewControllerAnimated:YES completion:^{
    }];
    UIImage *theImage = nil;
    if (picker.sourceType == UIImagePickerControllerSourceTypeCamera) {
        theImage = [info objectForKey:UIImagePickerControllerOriginalImage];
        //对拍摄的照片进行操作
//        [self.allImage addObject:theImage];
//        [self.mainCollectionView reloadData];
    }
}
- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker{
    [self dismissViewControllerAnimated:YES completion:nil];
}

二、调起手机相册选择多张照片

1. pod 'CTAssetsPickerController' #从系统相册选取多张照片

2.导入头文件

#import <Photos/Photos.h>

#import <CTAssetsPickerController/CTAssetsPickerController.h>

3.添加代理

CTAssetsPickerControllerDelegate

4.设置代理

//调起手机相册图片
- (void)goPhotoes{
    
    [PHPhotoLibrary requestAuthorization:^(PHAuthorizationStatus status) {
        if (status != PHAuthorizationStatusAuthorized) return ;
        
        dispatch_async(dispatch_get_main_queue(), ^{
            CTAssetsPickerController *picker = [[CTAssetsPickerController alloc]init];
            picker.delegate = self;
            //显示选择的索引
            picker.showsSelectionIndex = YES;
            //设置相册的类型 : 相机胶卷+自定义相册
            picker.assetCollectionSubtypes = @[@(PHAssetCollectionSubtypeSmartAlbumUserLibrary),@(PHAssetCollectionSubtypeAlbumRegular)];
            //不需要显示空的相册
            picker.showsEmptyAlbums = NO;
            [self presentViewController:picker animated:YES completion:^{
            }];
            
        });
        
    }];
    
}

5.实现代理方法

- (void)assetsPickerController:(CTAssetsPickerController *)picker didFinishPickingAssets:(NSArray *)assets{
    NSArray *array = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documents = [array lastObject];
    NSString *documentPath = [documents stringByAppendingPathComponent:@"arrayXML.xml"];
    NSArray *dataAray = [NSArray arrayWithArray:assets];
    [dataAray writeToFile:documentPath atomically:YES];
    NSArray *resultArray = [NSArray arrayWithContentsOfFile:documentPath];
    NSLog(@"%@",documentPath);
    
    //关闭图片选择页面
    [picker dismissViewControllerAnimated:YES completion:nil];
    
    //遍历选择的所有图片
//    self.plCollection.photoArray = assets;
//    for (int i = 0; i < assets.count; i ++) {
//        //基本配置
//        CGFloat scale = [UIScreen mainScreen].scale;
//        PHImageRequestOptions *options = [[PHImageRequestOptions alloc]init];
//        options.resizeMode = PHImageRequestOptionsResizeModeExact;
//        options.deliveryMode = PHImageRequestOptionsDeliveryModeHighQualityFormat;
//
//        PHAsset *asset = assets[i];
//        CGSize size = CGSizeMake(asset.pixelWidth/scale, asset.pixelHeight/scale);
    
        //获取图片
//        [[PHImageManager defaultManager]requestImageForAsset:asset targetSize:size contentMode:PHImageContentModeDefault options:options resultHandler:^(UIImage * _Nullable result, NSDictionary * _Nullable info) {
//           NSData *imageData = UIImageJPEGRepresentation(<#UIImage * _Nonnull image#>, <#CGFloat compressionQuality#>)
//        }];
        
//    }
    
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值