zoukankan      html  css  js  c++  java
  • IOS获取摄像和本地中的资源

    上传文件时,我们都的从本地中选择或用相机来拍摄得到文件。

    一个上传按钮,单击事件

    复制代码
     1 -(IBAction)btnClick{
     2    UIActionSheet* actionSheet = [[UIActionSheet alloc]
     3                                                initWithTitle:@"请选择文件来源"
     4                                                     delegate:self
     5                                        cancelButtonTitle:@"取消"
     6                                 destructiveButtonTitle:nil
     7                                        otherButtonTitles:@"照相机",@"摄像机",@"本地相簿",@"本地视频",nil];
     8             [actionSheet showInView:self.view];
     9             [actionSheet release];
    10 }
    复制代码

    点击按钮触发的btnClick事件后将会弹出一个如下的选择筐:

    接下来将要为UIActionSheet实现其中的委托了。

    复制代码
     1 #pragma mark -
     2 #pragma UIActionSheet Delegate
     3 - (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex
     4 {   
     5     NSLog(@"buttonIndex = [%d]",buttonIndex);
     6     switch (buttonIndex) {
     7         case 0://照相机
     8             {10                 UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init];
    11                 imagePicker.delegate = self;
    12                 imagePicker.allowsEditing = YES;
    13                 imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera;
    14                 imagePicker.mediaTypes =  [[NSArray alloc] initWithObjects: (NSString *) kUTTypeImage, nil];
    15                 [self presentModalViewController:imagePicker animated:YES];
    16                 [imagePicker release];
    17             }
    18             break;
    19         case 1://摄像机
    20             {22                 UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init];
    23                 imagePicker.delegate = self;
    24                 imagePicker.allowsEditing = YES;
    25                 imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera;
    26                 imagePicker.mediaTypes = [[NSArray alloc] initWithObjects: (NSString *) kUTTypeMovie, nil];
    27                 imagePicker.videoQuality = UIImagePickerControllerQualityTypeLow;
    28                 [self presentModalViewController:imagePicker animated:YES];
    29                 [imagePicker release];
    30             }
    31             break;
    32         case 2://本地相簿
    33             {35                 UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init];
    36                 imagePicker.delegate = self;
    37                 imagePicker.allowsEditing = YES;
    38                 imagePicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
    39                 imagePicker.mediaTypes =  [[NSArray alloc] initWithObjects: (NSString *) kUTTypeImage, nil];
    40                 [self presentModalViewController:imagePicker animated:YES];
    41                 [imagePicker release];
    42             }
    43             break;
    44         case 3://本地视频
    45             {47                 UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init];
    48                 imagePicker.delegate = self;
    49                 imagePicker.allowsEditing = YES;
    50                 imagePicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
    51                 imagePicker.mediaTypes =  [[NSArray alloc] initWithObjects: (NSString *) kUTTypeMovie, nil];
    52                 [self presentModalViewController:imagePicker animated:YES];
    53                 [imagePicker release];
    54             }
    55             break;
    56         default:
    57             break;
    58     }
    59 }
    复制代码

    实现了UIActionSheet的委托后,要发现,我们使用了UIImagePickerController,这个类将帮我们实现选取文件,打开对应的选取方式。比如当ButtonIndex为0的时候,它将帮我们打开照相机,我们可以使用相机拍摄照片作为上传的选取文件。因此,在这里我们还要实现UIImagePickerController的委托:

    复制代码
     1 #pragma mark - 
     2 #pragma UIImagePickerController Delegate
     3 - (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
     4 {
     5     if ([[info objectForKey:UIImagePickerControllerMediaType] isEqualToString:(NSString*)kUTTypeImage]) {
     6         UIImage  *img = [info objectForKey:UIImagePickerControllerEditedImage];
     7         self.fileData = UIImageJPEGRepresentation(img, 1.0);
     8     } else if ([[info objectForKey:UIImagePickerControllerMediaType] isEqualToString:(NSString*)kUTTypeMovie]) {
     9         NSString *videoPath = [[info objectForKey:UIImagePickerControllerMediaURL] path];
    10         self.fileData = [NSData dataWithContentsOfFile:videoPath]; 
    11     }
    12     [picker dismissModalViewControllerAnimated:YES];
    13 }
    14 
    15 - (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker 
    16 {
    17     [picker dismissModalViewControllerAnimated:YES];
    18 }
    复制代码

    之后,你选取的文件便保存在了filedata中。就可以随时过来调用了。

  • 相关阅读:
    【分享】使用 AXI performance monitors (APM)测试MPSoC DDR访问带宽
    测试MPSoC GEM 的1588功能
    使用ffmpeg把mp4转换为NV12文件
    强制开放MPSoC的PS-PL接口
    Java操作数据库指南(之一)
    大数据中台技术架构
    数据仓库到数据中台的演进
    Spark SQL入门到实战之(8)数据倾斜优化
    项目实战从0到1之hive(47)大数据项目之电商数仓(用户行为数据)(十五)
    项目实战从0到1之hive(46)大数据项目之电商数仓(用户行为数据)(十四)
  • 原文地址:https://www.cnblogs.com/yjg2014/p/4280902.html
Copyright © 2011-2022 走看看