如何調用本地相冊、相機

 
一、判斷系統是否支持相機
[UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]
二、建立相冊視圖控制器對象
UIImagePickerController *imagePickerController = [[UIImagePickerController alloc] init];
三、設置sourceType(資源類型)
imagePickerController.sourceType = UIImagePickerControllerSourceTypeCamera;//相機
imagePickerController.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;//圖片庫
imagePickerController.sourceType = UIImagePickerControllerSourceTypeSavedPhotosAlbum;//保存的圖片
四、設置彈出動畫(可選)
imagePickerController.modalTransitionStyle = UIModalTransitionStyleCoverVertical;
五、設置是否容許編輯圖片
imagePickerController.allowsEditing = YES;
六、設置代理(UIImagePickerControllerDelegate)
imagePickerController.delegate = self;
七、實現代理方法:獲取圖片
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
     [picker dismissViewControllerAnimated:YES completion:nil];
    //獲取圖片
     UIImage *image = [info objectForKey:UIImagePickerControllerOriginalImage];
}
//取消點擊
- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker
{
    [self dismissViewControllerAnimated:YES completion:^{}];
}
八、保存圖片到相冊
UIImageWriteToSavedPhotosAlbum(image, self, @selector(image:didFinishSavingWithError:contextInfo:), nil);//image:要保存的圖片UImage對象,
- (void) image: (UIImage *) image
didFinishSavingWithError: (NSError *) error
   contextInfo: (void *) contextInfo{
//若是error==NULL,則表示圖片保存成功
}
 
具體代碼:
- (void)viewDidLoad {
    [super viewDidLoad];
    UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];
    btn.frame = CGRectMake(10, 50, 80, 80);
    btn.backgroundColor = [UIColor redColor];
    [btn addTarget:self action:@selector(showpicker) forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview:btn];   
}
-(void)showpicker{
    UIImagePickerController *imagepicker = [[UIImagePickerController alloc]init];
    imagepicker.sourceType = 2;//設置類型(0表明調用相冊,1 表明彈出相機)
    imagepicker.allowsEditing = YES;//是否容許編輯,默認no,設置爲yes時,點擊圖片會進入編輯界面(裁剪)
   
    imagepicker.delegate = self;//設置代理
    [self presentViewController:imagepicker animated:YES completion:nil];//彈出相冊/相機
}
//選擇圖片後調用的代理方法
-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary<NSString *,id> *)info{
    NSLog(@"%@",info);
    UIImage *image = info[@"UIImagePickerControllerEditedImage"];//獲取圖片
    UIImageView *imageview = [[UIImageView alloc]initWithImage:image];
    imageview.frame = CGRectMake(40, 150, 100, 100);
    [self.view addSubview:imageview]; 
    [self dismissViewControllerAnimated:YES completion:nil];//消失imagepicker
}
相關文章
相關標籤/搜索