iOS 获取相册中的图片名称

在今天的项目开发中用到一个图片上传的接口, 需要将本地图片的保存路径上传到服务器. 最初的想法是先获取图片的名称, 再根据图片名获取图片的完整路径, 最后上传.
获取相册中图片的信息需要导入 <AssetsLibrary/AssetsLibrary.h>头文件, 并在UIImagePickerController 的代理方法中实现如下方法:

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary<NSString *,id> *)info{
  //先获取asset在ALAssetsLibrary库中的url
   NSURL *imageUrl = [info valueForKey:UIImagePickerControllerReferenceURL];

   ALAssetsLibrary *assetsLibrary = [[ALAssetsLibrary alloc] init];
  //根据url获取asset信息, 并通过block进行回调
  [assetsLibrary assetForURL:imageUrl resultBlock:^(ALAsset *asset) {
      ALAssetRepresentation *representation = [asset defaultRepresentation];
      NSString *imageName = representation.filename;
      NSLog(@"imageName:%@", imageName);
   } failureBlock:^(NSError *error) {
      NSLog(@"%@", [error localizedDescription]);
  }];
}

后来发现根据图片名并不能获取图片在系统中的路径, 所以上面做的并没有什么卵用. 最后只能先将相册中的图片保存本地沙盒路径中, 再将沙盒路径作为作为参数上传. 此法才为问题的正解.

UIImage *image = [info valueForKey:UIImagePickerControllerOriginalImage];

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *doucumentDirectory = paths[0];
NSString *fullPath = [doucumentDirectory stringByAppendingPathComponent:@"photo.jpg"];
[UIImageJPEGRepresentation(image, 0.5) writeToFile:fullPath atomically:YES];
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 16,584评论 4 61
  • 电影《战争之王》中有一个情节,一批运有非法走私武器的货轮在公海上被国际海警盯上后,男主下令船员立即更换挂在船上的旗...
    techiecool阅读 328评论 0 0
  • 有几个月没去看她了,路上还很害怕听到什么不好的消息,门紧闭着,敲开是她妹妹开门,她认得我说 ,我姐姐住院了,我小心...
    利马川风阅读 3,825评论 0 3
  • 为什么要活着
    NaNeun大笨蛋阅读 438评论 0 0
  • 我的家乡位于中国的南部,南方雨水充足,海鲜较多,以水稻为主食。所以人们被称为“鱼米之乡”。 坐火车来到佛山读书,家...
    心情小屋阅读 345评论 1 0

友情链接更多精彩内容