IOS:从照片路径获取 NSData
Posted
技术标签:
【中文标题】IOS:从照片路径获取 NSData【英文标题】:IOS: Get NSData from Photos path 【发布时间】:2013-09-04 06:18:36 【问题描述】:我有一组来自照片库的图像路径。我需要通过我的 Facebook 应用发布这些照片。但我收到错误 324,“需要上传文件”。我认为我从路径获取 NSData 的方式是错误的。有什么帮助吗?
NSData *imageData = [NSData dataWithContentsOfURL:[NSURL URLWithString: URLImages[i]]];
NSMutableDictionary *params = [NSMutableDictionary dictionaryWithObjectsAndKeys:
messageTextView.text, @"message", imageData, @"source", nil];
但是当我在项目中对图像进行硬编码时,它可以工作
NSString *filePath = [[NSBundle mainBundle] pathForResource:@"IMAG0386" ofType:@"jpg"];
NSData *imageData = [NSData dataWithContentsOfFile:filePath];
mosaicShareImages[i]]];
NSMutableDictionary *params = [NSMutableDictionary dictionaryWithObjectsAndKeys:
messageTextView.text, @"message", imageData, @"source", nil];
【问题讨论】:
【参考方案1】:如果您尝试访问资产库 URL(以 assets-library://
开头),NSData
方法 dataWithContentsOfURL:
将失败并返回 nil
。此方法没有访问与资产 URL 相关的图像所需的权限。要从资产库中读取,您需要使用 ALAssetsLibrary
's
- (void)assetForURL:(NSURL *)assetURL
resultBlock:(ALAssetsLibraryAssetForURLResultBlock)resultBlock
failureBlock:(ALAssetsLibraryAccessFailureBlock)failureBlock
方法。如您所见,API 将失败和成功的块作为参数。此方法是异步的,因为可能需要要求用户授予对数据的访问权限。
更多关于 API from Apple docs
当请求资产时,可能会要求用户确认应用程序对库的访问;但是,该方法会立即返回。您应该对 resultBlock 中的资产执行任何您想要的工作。 如果用户拒绝访问应用程序,或者不允许任何应用程序访问数据,则调用失败块。
如何使用这个 API 可以在这个答案中找到。 https://***.com/a/13523463/1407017
希望有帮助!
【讨论】:
【参考方案2】:在代码中尝试这种更改:
NSData *imageData = [NSData dataWithContentsOfURL:[NSURL URLWithString:[NSString stringWithFormat:@"%@",URLImages[i]]]]
;
【讨论】:
【参考方案3】:如果您的数组 URLImages[i] 包含图像文件的绝对路径,那么您需要使用[NSURL fileURLWithPath:]
,如下所示:
NSData *imageData = [NSData dataWithContentsOfURL:[NSURL fileURLWithPath: URLImages[i]]];
【讨论】:
【参考方案4】:NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"%@",URLImages]];
NSLog(@"%@",url);
NSData *data = [[NSData alloc]initWithContentsOfURL:url];
UIImage * img=[UIImage imageWithData:data];
ImgView.image=img;
试试这个..
【讨论】:
同样的错误,和 url 打印一样。 assets-library://asset/asset.JPG?id=F30FFA87-C329-4C21-AA00-0FF3A985A2A1&ext=JPG以上是关于IOS:从照片路径获取 NSData的主要内容,如果未能解决你的问题,请参考以下文章