您的位置:首页 > 移动开发 > IOS开发

iOS - 获取系统相册照片名称,路径以及各项信息

2016-11-06 19:20 761 查看
最近做的项目 , 在我看来都停偏的 , 因为需要的都不仅仅是展示和业务逻辑 , 而主要都是网络和存储,文件,流媒体操作方面的东西 . 所以今天想要获取下照片的名称 , 还找了挺久的 . 以此记录下 , 直接上代码 .

首先让当前控制器遵循 UINavigationControllerDelegate,UIImagePickerControllerDelegate 这两个协议 , 并实现其方法 , 用于打开相册并选择照片

//打开相册
- (void)uploadPhoto
{
if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypePhotoLibrary])
{
UIImagePickerController *picker = [[UIImagePickerController alloc] init];
//设置当前控制器为picker对象的代理
picker.delegate = self;
picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
[self presentViewController:picker animated:YES completion:nil];
}
}


代理方法

//获取照片信息
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary<NSString *,id> *)info
{

//获取图片的名称
//获取
NSURL *url = [info objectForKey:UIImagePickerControllerReferenceURL];

//导入 #import <AssetsLibrary/AssetsLibrary.h> 库
//创建 ALAssetsLibrary 对象
ALAssetsLibrary *library = [[ALAssetsLibrary alloc]init];

[library assetForURL:url resultBlock:^(ALAsset *asset){

//获取图片
UIImage *image = info[UIImagePickerControllerOriginalImage];
//获取照片名称
NSString *fileName = asset.defaultRepresentation.filename;
//获取照片元数据  ,包含一些RGB什么的
NSString *fileName = asset.defaultRepresentation.metadata;

//获取照片大小比例等等... defaultRepresentation的属性中可以查看
....

//开始上传 (此方法无视 , 这是项目中需要的方法)
[JYCenterAddUploadManager executeUpLoadFileWithFile:image fileParent:@"root" fileName:fileName fileType:JYUpLoadFileTypeImage response:^(JYDownLoadTaskModel *taskModel) {

}];

}failureBlock:^(NSError *error){

[NSObject alertShowWithSingleTipWithtarget:self title:@"获取相册失败" makeSureClick:nil];

}];

[picker dismissViewControllerAnimated:YES completion:nil];
}


尤其需要注意的是: 苹果为了保护用户隐私 , 我们开发者是拿不到相册里视频和照片的路径的 , 此路径是指物理路径 , 而并非上述的URL
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ios
相关文章推荐