zoukankan      html  css  js  c++  java
  • IOS开发之UIImagePckerController

    建议在看的时候把Screen拉到最宽======让这行文字在一行显示===============================================

    1. 注意使用之前必须要先导入UIKit框架

    2.使用

    创建UIImagePckerController

    2.使用流程:                                                                               |
                                                                                                    |
                                                                                        sourceType(选择相册/摄像头)
                                                                                                    | 摄像头:UIImagePickerControllerSourceTypeCamera
                                                                                                    | 相册:UIImagePickerControllerSourceTypePhotoLibrary
                                                                                                    | 相册:UIImagePickerControllerSourceTypeSavedPhotosAlbum
                                                                                        cameraCaptureMode (选择照相/录像)  设置录像  默认拍照----要先选择媒体的类型 不然会崩溃
                                                                                                     | 录像:UIImagePickerControllerCameraCaptureModeVideo
                                                                                                     | 拍照:UIImagePickerControllerCameraCaptureModePhoto
                                                                                          cameraDevice (前摄像头/后摄像头)   
                                                                                                     | 前摄像头:UIImagePickerControllerCameraDeviceFront
                                                                                                     | 后置摄像头:UIImagePickerControllerCameraDeviceRear
                                                                                        showsCameraControls 是否显示控件 
                                                                                                     |YES
                                                                                                     |NO
                                                                                         takePicture  设置 拍照
                                                                                                     |
                                                                                                     |
                                                                             mediaTypes  选择媒体类型
                                                //    拍照的时候不选择媒体类型  不会奔溃  是因为默认设置是KUTTypeImage;
                                                //   需要导入MobileCoreServices框架, MobileCoreServices这个框架中需要的不是oc需要的字符串类型  需要强制转换
                                                //    pickcontroller.mediaTypes =@[(NSString *)kUTTypeImage];
                                                                                                     |
                                                                                                     |
                                                                                         startVideoCapture  设置 录像
                                                                                                     | startVideoCapture
                                                                                                     | stopVideoCapture
                                                                                         设置清晰度           
                                                                                                     | 清晰模式
                                                                                                     |   UIImagePickerControllerQualityTypeLow  
                                                                                                     |   UIImagePickerControllerQualityTypeMedium
                                                                                                     |   UIImagePickerControllerQualityTypeLow
                                                                                                     | 尺寸  
                                                                                                     |    UIImagePickerControllerQualityType640x480
                                                                                                     |    UIImagePickerControllerQualityTypeIFrame1280x720
                                                                                                     |    UIImagePickerControllerQualityTypeIFrame960x540
                                                                                      videoMaximumDuration  设置视频最大的录像时间
                                                                                                     |
                                                                                                     |
                                                                                      cameraFlashMode    设置闪光
                                                                                                     |   UIImagePickerControllerCameraFlashModeOff  = -1,
                                                                                                     |  UIImagePickerControllerCameraFlashModeAuto = 0,
                                                                                                     |  UIImagePickerControllerCameraFlashModeOn   = 1    
                                                                                   cameraViewTransform 设置拍照页面的形态 ( CGAffineTransform)
     
     
     
     
     
     代理:一共有两个代理: UINavigationControllerDelegate, UIImagePickerControllerDelegate
          一个是导航栏代理  一个是pickcontroller代理
     
    //    采集完成之后调用
     - (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary<NSString *,id> *)info;
    //  采集取消的时候调用
     - (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker;
     
     
     
     
    //        把图片保存到相册
            UIImageWriteToSavedPhotosAlbum(finashImage, self, @selector(image: didFinishSavingWithError:contextInfo:), nil);
    //       保存照片成功  回调方法
    - (void)image:(UIImage *)image didFinishSavingWithError:(NSError *)error contextInfo:(void *)contextInfo{
        NSLog(@"保存成功");
    }
     
     
     
     
     
    //        视频保存到相册之后调用
            UISaveVideoAtPathToSavedPhotosAlbum(info[UIImagePickerControllerMediaURL], self, @selector(video:didFinishSavingWithError:contextInfo:), nil);
    //       保存视频成功  回调方法
    - (void)video:(NSString *)videoPath didFinishSavingWithError:(NSError *)error contextInfo:(void *)contextInfo{
        AVPlayer *player = [AVPlayer playerWithURL:[NSURL fileURLWithPath:videoPath]];
        AVPlayerViewController *avplayercon = [[AVPlayerViewController alloc]init];
        avplayercon.player = player;
        [self presentViewController:avplayercon animated:YES completion:nil];
    }
     
     
    代码如下:(example)==============================================================
     
     

    #define SCREEN_BOUNDS [UIScreen mainScreen].bounds//屏幕尺寸

    #define SCREEN_WIDTH CGRectGetWidth([UIScreen mainScreen].bounds)//屏幕宽

    #define SCREEN_HEIGHT CGRectGetHeight([UIScreen mainScreen].bounds)//屏幕高

    @interface ViewController ()<UINavigationControllerDelegate, UIImagePickerControllerDelegate>{

        UIImagePickerController *pickcontroller;

        UILabel *showTypeLable;

        BOOL isMovie;//判断摄像拍照的依据

        UIImageView *imageView;//显示拍照录像结果的视图

    }

    @end

     

    @implementation ViewController

    - (void)viewDidLoad {

        [super viewDidLoad];

        UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];

        button.frame = CGRectMake(100, 100, 100, 100);

        [button setTitle:@"Camera" forState:UIControlStateNormal];

        button.backgroundColor = [UIColor brownColor];

        [button addTarget:self action:@selector(doit) forControlEvents:UIControlEventTouchUpInside];

        [self.view addSubview:button];

        

    //UICollectionView

        

        

        UISwitch *mediaSwitch = [[UISwitch alloc] initWithFrame:CGRectMake(SCREEN_WIDTH-100, 50, 50, 50)];

        [mediaSwitch addTarget:self action:@selector(changeMediaType:) forControlEvents:UIControlEventValueChanged];

        [self.view addSubview:mediaSwitch];

        

        imageView  = [[UIImageView alloc]initWithFrame:CGRectMake(100, 150, 100, 100)];

        [self.view addSubview:imageView];

        

        

        showTypeLable = [[UILabel alloc] initWithFrame:CGRectMake(CGRectGetMinX(mediaSwitch.frame), CGRectGetMinY(mediaSwitch.frame)-30, 50, 20)];

        

        showTypeLable.textAlignment = NSTextAlignmentCenter;

        showTypeLable.textColor = [UIColor colorWithRed:0.0078 green:0.6396 blue:1.0 alpha:1.0];

        showTypeLable.text = @"拍照";

        [self.view addSubview:showTypeLable];

        

        

        

    }

    -(void)changeMediaType:(UISwitch *)sender{

       showTypeLable.text = sender.isOn!=YES?@"拍照":@"录像";

        if (isMovie==YES) {

            //    设置录像  默认拍照----要先选择媒体的类型

            //    *******不然会崩溃

            pickcontroller.cameraCaptureMode = UIImagePickerControllerCameraCaptureModeVideo;

            

        }

    }

    -(void)doit{

        pickcontroller = [[UIImagePickerController alloc]init];

    //    选择摄像头设备

    //    默认的是相册

        pickcontroller.sourceType = UIImagePickerControllerSourceTypeCamera;

        [self presentViewController:pickcontroller animated:YES completion:nil];

    //    选择媒体类型

    //    拍照的时候不选择媒体类型  不会奔溃  是因为默认设置是KUTTypeImage;

    //    MobileCoreServices这个框架中需要的不是oc需要的字符串类型  需要强制转换

    //    pickcontroller.mediaTypes =@[(NSString *)kUTTypeImage];

        

        pickcontroller.delegate = self;

        

        

    //    设置录像  默认拍照----要先选择媒体的类型

    //    *******不然会崩溃

        pickcontroller.cameraCaptureMode = UIImagePickerControllerCameraCaptureModeVideo;

        

        

        

        

        

    }

    - (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary<NSString *,id> *)info{

        if ([info [UIImagePickerControllerMediaType]isEqualToString:(NSString *)kUTTypeMovie]) {

            

            NSLog(@"w拍完了");

            NSLog(@"====%@",info);

            

    //        视频保存到相册之后调用

            UISaveVideoAtPathToSavedPhotosAlbum(info[UIImagePickerControllerMediaURL], self, @selector(video:didFinishSavingWithError:contextInfo:), nil);

            

            UIImage *finashImage = info[UIImagePickerControllerOriginalImage];

            

            imageView.image = nil;

            imageView.image =finashImage;

            

    //        NSData *imageData =UIImageJPEGRepresentation(finashImage, 0.1);  //传二进制图片进服务器

    //        UIImagePNGRepresentation(finashImage);//   传png格式的照片进服务器

            

    //        把图片保存到相册

            UIImageWriteToSavedPhotosAlbum(finashImage, self, @selector(image: didFinishSavingWithError:contextInfo:), nil);

            

            

        }

    }

    //保存照片成功  回调方法

    - (void)image:(UIImage *)image didFinishSavingWithError:(NSError *)error contextInfo:(void *)contextInfo{

        NSLog(@"保存成功");

    }

    //保存视频成功  回调方法

    - (void)video:(NSString *)videoPath didFinishSavingWithError:(NSError *)error contextInfo:(void *)contextInfo{

        AVPlayer *player = [AVPlayer playerWithURL:[NSURL fileURLWithPath:videoPath]];

        AVPlayerViewController *avplayercon = [[AVPlayerViewController alloc]init];

        avplayercon.player = player;

        [self presentViewController:avplayercon animated:YES completion:nil];

    }

    - (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker{

          NSLog(@"取消");

        [self dismissViewControllerAnimated:YES completion:nil];

    }

     
     
  • 相关阅读:
    第十八章 并发登录人数控制——《跟我学Shiro》(http://blog.csdn.net/lhacker/article/details/19334305)
    spring4 hibernate4 transaction
    sqllite
    http://www.cnblogs.com/enshrineZither/p/3793459.html
    MyBatis 显示日志
    Centos7配置更新国内yum源
    解决Centos运行yum 报错:坏的解释器
    用python生成基于lombok 和 hibernate 生成javabean
    数据库事务中的隔离级别和锁+spring Transactional注解
    springmvc 通过异常增强返回给客户端统一格式
  • 原文地址:https://www.cnblogs.com/Biaoac/p/5302715.html
Copyright © 2011-2022 走看看