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

本文记录了在iOS项目中获取系统相册照片名称和信息的过程,包括遵循UINavigationControllerDelegate和UIImagePickerControllerDelegate协议,以及如何在苹果保护用户隐私的限制下获取照片URL而非物理路径。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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


首先让当前控制器遵循 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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值