2016-05-05 26 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 –