UIImagePickerController

创建对象

//去相册选择图片
 UIImagePickerController * pickerController =[[UIImagePickerController alloc]init];
 pickerController.mediaTypes = @[(NSString *)kUTTypeImage,(NSString *)kUTTypeMovie,(NSString *)kUTTypeVideo];//设置选择的资源类型
 if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypePhotoLibrary]) {
     pickerController.sourceType=UIImagePickerControllerSourceTypePhotoLibrary;
     pickerController.delegate=self;

     [self.navigationController presentViewController:pickerController animated:YES completion:^{

     }];
 }

代理方法实现:

-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary<NSString *,id> *)info{
    [picker dismissViewControllerAnimated:NO completion:nil];
    NSString * file= nil;
    NSString *mdeiaTye = [info objectForKey:UIImagePickerControllerMediaType]; //获取媒体类型
    if ([mdeiaTye isEqualToString:(NSString*)kUTTypeImage]) {
      //获取的是图片资源
        UIImage *image = [info objectForKey:UIImagePickerControllerOriginalImage];
        NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
        NSString *docPath = [paths lastObject];
        file = [docPath stringByAppendingPathComponent:@"output.png"];
        [[NSFileManager defaultManager]removeItemAtPath:file error:nil];
        NSData *imageData = UIImagePNGRepresentation(image);
        [imageData writeToFile:file atomically:YES];
        NSString* uuid = [[NSString stringWithFormat:@"tmp://%@", [[NSUUID UUID] UUIDString]] stringByAppendingPathExtension:[file pathExtension]];
        [[NSFileManager defaultManager] moveItemAtPath:file toPath:[FileDownloader cacheFileWithUrl:uuid] error:nil];

    }else {
      // 获取的是视频资源
        NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
        NSString *docPath = [paths lastObject];
        file = [docPath stringByAppendingPathComponent:@"output.mp4"];
        [[NSFileManager defaultManager]removeItemAtPath:file error:nil];
        NSURL * url =[info objectForKey:UIImagePickerControllerMediaURL];
        NSData * data =[NSData dataWithContentsOfURL:url];
        [data writeToFile:file atomically:YES];//将视频移到本应用的目录下
        NSString* uuid = [[NSString stringWithFormat:@"tmp://%@", [[NSUUID UUID] UUIDString]] stringByAppendingPathExtension:[file pathExtension]];
        [[NSFileManager defaultManager] moveItemAtPath:file toPath:[FileDownloader cacheFileWithUrl:uuid] error:nil];
        // 获取视频时长
        CGFloat duration = [self getVideoDuration:url];

    }
}

//获取视频时长
-(CGFloat) getVideoDuration:(NSURL*) URL {
    NSDictionary* opts = [NSDictionary dictionaryWithObject:[NSNumber numberWithBool:NO] forKey:AVURLAssetPreferPreciseDurationAndTimingKey];
    AVURLAsset *urlAsset = [AVURLAsset URLAssetWithURL:URL options:opts];
    float second = 0;
    second = urlAsset.duration.value/urlAsset.duration.timescale;
    return second;
}

// 获取文件大小
-(NSInteger) getFileSize:(NSString*) path {
    NSFileManager *filemanager = [[NSFileManager alloc]init];
    if([filemanager fileExistsAtPath:path]){
        NSDictionary* attributes = [filemanager attributesOfItemAtPath:path error:nil];
        NSNumber *theFileSize;
        if ( (theFileSize = [attributes objectForKey:NSFileSize]) )
            return [theFileSize intValue]/1024; else return -1;
    }
    else {
        return -1;
    }
}


   转载规则


《UIImagePickerController》 志鹏 采用 知识共享署名 4.0 国际许可协议 进行许可。
 上一篇
English-UNIT6 English-UNIT6
# 谈论天气、季节和温度描述一个地方的天气和气候有多种方法。 你可以描述天气和温度。 It's often wendy. 常常刮风。 It's so cold and cloudy. 天很阴,又很冷。 It g
2016-11-19 志鹏
下一篇 
顶点着色器 顶点着色器
顶点着色器顶点着色器实现了顶点操作的通秀可编程方法 顶点着色器的输入: 着色器程序 : 描述顶点上执行操作的顶点着色器程序源代码或可执行文件 顶点为着色器输入(属性):用顶点数组提供的每个顶点的数据 统一变量(uniform):顶点着色器
2016-11-17
  目录