zoukankan      html  css  js  c++  java
  • iOS-iOS调用相机调用相册【将图片保存到本地相册】

    设置头部代理

    <UINavigationControllerDelegate, UIImagePickerControllerDelegate>

    1.调用相机

    检测前置摄像头是否可用

    - (BOOL)isFrontCameraAvailable{
        return [UIImagePickerController isCameraDeviceAvailable:UIImagePickerControllerCameraDeviceFront];
    }

    检测后置摄像头是否可用

    - (BOOL)isRearCameraAvailable{
        return [UIImagePickerController isCameraDeviceAvailable:UIImagePickerControllerCameraDeviceRear];
    }

    调用相机

    ///调用相机
    - (void)persentImagePicker{
        if (!_imagePickerG) {
            ///初始化相机
            _imagePickerG = [[UIImagePickerController alloc]init];
            ///代理
            _imagePickerG.delegate = self;
        }
        
        // 前面的摄像头是否可用
        if ([self isFrontCameraAvailable]) {
            _imagePickerG.sourceType = UIImagePickerControllerSourceTypeCamera;
        }
        // 后面的摄像头是否可用
        else if ([self isFirstResponder]){
            _imagePickerG.sourceType = UIImagePickerControllerSourceTypeCamera;
        }
        else{
            [SVProgressHUD showErrorWithStatus:@"没有相机可用~"];
            return;
        }
        ///允许拍照后裁剪
        _imagePickerG.allowsEditing = YES;
        [self.navigationController presentViewController:_imagePickerG animated:YES completion:nil];
    }

    2.调用相册

    ///调用本地相册
    - (void)persentImagePicker{
        if (!_imagePickerG) {
            ///初始化相机
            _imagePickerG = [[UIImagePickerController alloc]init];
            ///代理
            _imagePickerG.delegate = self;
        }
        ///相册
        _imagePickerG.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
        _imagePickerG.allowsEditing = YES;
        [self.navigationController presentViewController:_imagePickerG animated:YES completion:nil];
    }

    3.代理事件

    ///取消选择图片(拍照)
    - (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker{
        [picker dismissViewControllerAnimated:YES completion:nil];
    }
    ///选择图片完成(从相册或者拍照完成)
    - (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary<NSString *,id> *)info{
        UIImage *image = [info objectForKey:UIImagePickerControllerOriginalImage];///原图
        //获取修剪后的图片
        UIImage *imageUp = [info objectForKey:UIImagePickerControllerEditedImage];
    }

    4.将图片保存到本地

    ///保存图片到本地相册
    -(void)imageTopicSave:(UIImage *)image{
        UIImageWriteToSavedPhotosAlbum(image, self, @selector(image: didFinishSavingWithError: contextInfo:), nil);
    }
    - (void)image:(UIImage *)image didFinishSavingWithError:(NSError *)error contextInfo:(void *)contextInfo{
        if (error == nil) {
            
        }
        else{
            ///图片未能保存到本地
        }
    }
  • 相关阅读:
    C# 把带有父子关系的数据转化为------树形结构的数据 ,以及 找出父子级关系的数据中里面的根数据Id
    基于角色的菜单按钮权限的设计及实现
    基于记忆性的中值滤波O(r)与O(1)复杂度的算法实现
    Canny算法检测边缘
    图像平滑去噪之高斯滤波器
    运动元素提取,基于帧间差分与背景差分
    基于RGB与HSI颜色模型的图像提取法
    基于阈值的灰度图像提取法
    C语言深入学习
    大津法实现图像二值化
  • 原文地址:https://www.cnblogs.com/wangkejia/p/7804279.html
Copyright © 2011-2022 走看看