成功返回PHAssets和URL的代码:
PHFetchResult* phFetchResult = [PHAsset fetchAssetsWithMediaType:PHAssetMediaTypeImage options:nil]PHImageManager *manager = [PHImageManager defaultManager];PHImageRequestoptions* options = [[PHImageRequestoptions alloc] init];options.synchronous = YES; // Force sequential work. We have nothing to do until this block returns.PHAsset* asset = [phFetchResult objectAtIndex:index];[manager requestimageForAsset:asset targetSize:PHImageManagerMaximumSize contentMode:PHImageContentModeDefault options:options resultHandler:^(UIImage *resultimage,NSDictionary *info) { _image = resultimage; NSURL* fileURL = [info objectForKey:@"PHImagefileURLKey"]; _imageLocation = [fileURL relativePath]; }];
代码显示没有找到:
NSURL* fileURL = [info objectForKey:@"PHImagefileURLKey"];NSLog(@"file exist?: %d",[[NSfileManager defaultManager] fileExistsAtPath:[fileURL relativePath]]);
我目前的解决方法是获取给定的UIImage并将其保存到/ tmp目录,然后使用该URL.这不是一个理想的解决方案,我真的很想知道PHImagefileURLKey的目的
解决方法 我研究PHImagefileURLKey,我认为没有办法通过PHImagefileURLKey查找图像数据,但您可以使用资产本地标识符而不是PHImagefileURLKey来查找图像数据.我的代码供您参考:
您可以使用资产的本地标识符,并将图像作为响应.
PHFetchResult *savedAssets = [PHAsset fetchAssetsWithLocalIDentifIErs:@[asset.localIDentifIEr] options:nil]; [savedAssets enumerateObjectsUsingBlock:^(PHAsset *asset,NSUInteger IDx,BOol *stop) { //this gets called for every asset from its localIDentifIEr you saved PHImageRequestoptions * imageRequestoptions = [[PHImageRequestoptions alloc] init]; imageRequestoptions.synchronous = YES; imageRequestoptions.deliveryMode = PHImageRequestoptionsResizeModeFast; [[PHImageManager defaultManager]requestimageForAsset:asset targetSize:CGSizeMake(50,50) contentMode:PHImageContentModeAspectFill options:imageRequestoptions resultHandler:^(UIImage * _Nullable result,NSDictionary * _Nullable info) { NSLog(@"get image from result"); }]; }];总结
以上是内存溢出为你收集整理的ios – 从PHImageFileURLKey获取的URL读取全部内容,希望文章能够帮你解决ios – 从PHImageFileURLKey获取的URL读取所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)