3 回答

TA貢獻(xiàn)1785條經(jīng)驗(yàn) 獲得超8個(gè)贊
盡管Matthew Frederick的回答最受歡迎,并且長(zhǎng)期以來(lái)一直是適當(dāng)?shù)幕貞?yīng),從iOS 5.0(蘋(píng)果可用)開(kāi)始dismissViewControllerAnimated:completion:,以取代現(xiàn)已棄用的(從iOS 6.0開(kāi)始)dismissViewControllerAnimated:。
希望在完成塊中執(zhí)行圖像信息字典檢索應(yīng)該對(duì)所有人都有意義。
從上面舉個(gè)例子,現(xiàn)在看起來(lái)像:
- (void) imagePickerController:(UIImagePickerController *)picker
didFinishPickingMediaWithInfo:(NSDictionary *)info
{
[picker dismissViewControllerAnimated:YES completion:^{
// Edited image works great (if you allowed editing)
myUIImageView.image = [info objectForKey:UIImagePickerControllerEditedImage];
// AND the original image works great
myUIImageView.image = [info objectForKey:UIImagePickerControllerOriginalImage];
// AND do whatever you want with it, (NSDictionary *)info is fine now
UIImage *myImage = [info objectForKey:UIImagePickerControllerEditedImage];
}];
}

TA貢獻(xiàn)1830條經(jīng)驗(yàn) 獲得超9個(gè)贊
我已經(jīng)嘗試了所有上述操作,但是在iPad 6.0 / 6.1模擬器上卻沒(méi)有運(yùn)氣,但是我發(fā)現(xiàn)信息包含“ UIImagePickerControllerReferenceURL”鍵,這是我的代碼:
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
[picker dismissViewControllerAnimated:YES completion:NULL];
UIImage* image = [info objectForKey:UIImagePickerControllerOriginalImage];
if(NULL == image){
[MyImageLoader loadImageFromAssertByUrl:[info objectForKey:@"UIImagePickerControllerReferenceURL"]
completion:^(UIImage* img){
//img not null here
}];
}else{
//image not null here
}
}
而loadImageFromAssertByUrl的代碼是:
+(void) loadImageFromAssertByUrl:(NSURL *)url completion:(void (^)(UIImage*)) completion{
ALAssetsLibrary *assetLibrary=[[ALAssetsLibrary alloc] init];
[assetLibrary assetForURL:url resultBlock:^(ALAsset *asset) {
ALAssetRepresentation *rep = [asset defaultRepresentation];
Byte *buffer = (Byte*)malloc(rep.size);
NSUInteger buffered = [rep getBytes:buffer fromOffset:0.0 length:rep.size error:nil];
NSData *data = [NSData dataWithBytesNoCopy:buffer length:buffered freeWhenDone:YES];
UIImage* img = [UIImage imageWithData:data];
completion(img);
} failureBlock:^(NSError *err) {
NSLog(@"Error: %@",[err localizedDescription]);
}];
}
- 3 回答
- 0 關(guān)注
- 1671 瀏覽
添加回答
舉報(bào)