2016-05-05 23 views
2
-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary<NSString *,id> *)info{ 

    NSURL *url = [info objectForKey:@"UIImagePickerControllerReferenceURL"]; 
    NSLog(@"url : %@",url); 
} 

我知道我们总是用ALAssetsLibrary通过UIImagePickerControllerReferenceURL得到的UIImage。但它已被弃用,那么我有其他方式吗?我怎样才能从“UIImagePickerControllerReferenceURL”的UIImage不ALAssetsLibrary

顺便说一句,下面的代码的输出:

assets-library://asset/asset.JPG?id=106E99A1-4F6A-45A2-B320-B0AD4A8E8473&ext=JPG 

我查了苹果官方的文件,发现了ALAssetsLibrary取代PHPhotoLibrary。

我的上帝!最后我发现,这里是答案:

-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary<NSString *,id> *)info{ 

    NSURL *url = [info objectForKey:UIImagePickerControllerReferenceURL]; 
    PHFetchResult *result = [PHAsset fetchAssetsWithALAssetURLs:@[url] options:nil]; 
    PHAsset *asset = result.firstObject; 
    PHImageManager *manager = [PHImageManager defaultManager]; 
    [manager requestImageForAsset:asset targetSize:CGSizeMake(100, 100) contentMode:PHImageContentModeAspectFit options:nil resultHandler:^(UIImage * _Nullable result, NSDictionary * _Nullable info) { 
     NSLog(@"%@",result); 
    }]; 
} 
+0

不相关,但不要使用字符串值'@“UIImagePickerControllerReferenceURL”'。使用提供的常量'UIImagePickerControllerReferenceURL'。 – rmaddy

+0

它没有区别,你知道如何从这个URL获取UIImage? –

+0

为什么不只是使用'UIImagePickerControllerOriginalImage'从'info'获取图像呢? – rmaddy

回答

1

由于ALAssetsLibrary在ios​​9中已弃用。使用Photos Framework Reference.

+0

的数据将是零,我已经试过 –

+0

我已编辑我的答案请看看 – BHUMICA

+0

是的!这是新的框架,但哪个函数可以通过UIImagePickerControllerReferenceURL获取UIImage –