2014-04-20 3 views
0

자산 라이브러리가 참조 URL과 함께 작동하는 방식에 대해 아직 이해하지 못했지만 지금은 nsdefaults에 참조를 저장하고 있습니다. 화면이로드 될 때 참조에서 이미지를 표시하고 싶지만 작동하지 않습니다. 응용 프로그램을 다시 시작할 때 나는이처럼 다시 얻으려고 지금저장된 카메라 롤 참조 URL에서 uiimageview를 설정하십시오.

- (void) imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info{ 
    [[NSUserDefaults standardUserDefaults]setObject:[info objectForKey:UIImagePickerControllerReferenceURL] forKey:@"profilePic"]; 
    [pics addObject:[info objectForKey:UIImagePickerControllerReferenceURL]]; 
    [library assetForURL:[pics objectAtIndex:pics.count-1] resultBlock:^(ALAsset *asset){ 
     UIImage *copyofOriginal = [UIImage imageWithCGImage:[[asset defaultRepresentation]fullScreenImage] scale:0.5 orientation:UIImageOrientationUp]; 
     profilePic.image = copyofOriginal; 
    }failureBlock:nil]; 
} 

하지만 나에게 빈 이미지를주고 : 여기에 내가 이미지를 얻고 방법

if (![[[NSUserDefaults standardUserDefaults]valueForKey:@"profilePic"] isEqualToString:@""]) { 
    [library assetForURL:[NSURL URLWithString:[[NSUserDefaults standardUserDefaults]valueForKey:@"profilePic"]] resultBlock:^(ALAsset *asset){ 
     UIImage *copyofOriginal = [UIImage imageWithCGImage:[[asset defaultRepresentation]fullScreenImage] scale:0.5 orientation:UIImageOrientationUp]; 
     profilePic.image = copyofOriginal; 
    }failureBlock:nil]; 
} 

로깅 [정보 objectForKey : UIImage ...] 및 NSUserDefaults에서 저장된 값을 내게 정확히 동일한 참조 URL을 제공합니다. 왜 그렇게하지 않니?

+0

어쩌면이 문서가 당신을 도울 수 있습니다 http://www.wooptoot.com/loading-images-from-the-ios-photo-library –

+0

이미 봤어, 정확히 내가하려는 일이 아니야. 처음에는 이미지를 선택하는 것으로 처리됩니다. 내가하고 싶은 것은 처음에 참조를 선택하고 참조 URL을 사용하여 설정 한 후 참조를 저장하는 것입니다. – denikov

답변

1

사용자가 갤러리에서 이미지를 선택하게하는 방법은 무엇입니까?

"Pick an Image"버튼을 보여주는 MyDummyController 컨트롤러가 있다고 상상해보십시오. 단추를 누를 때 전화 갤러리를 열려고합니다. 먼저 컨트롤러가 UIImagePickerControllerDelegate를 구현하는지 확인하십시오.

@interface MyDummyController : UIViewController<UIImagePickerControllerDelegate> 

다음으로 구현 파일에 다음 메소드를 구현하십시오.

// make sure this method is invoked when you tap "Pick An Image" button 
-(void)onTapPickAnImage 
{ 
    UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init]; 
    imagePicker.delegate = self; 
    imagePicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary; 
    [self presentViewController:imagePicker animated:YES completion:nil]; 
} 

-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info 
    { 
     // here is the image user selected 
     UIImage *image = [info objectForKey:@"UIImagePickerControllerOriginalImage"]; 
     // here is the URL to the image 
     NSURL *url = [info objectForKey:@"UIImagePickerControllerReferenceURL"]; 
    } 

이미지 URL에서 문자열 참조를 추출하는 방법은 무엇입니까?

다른 지속성 시스템 (예 : 핵심 데이터)에서는 NSURL을 직접 저장할 수 없습니다. 즉, 선택한 이미지의 참조를 어딘가에 저장하려면 문자열로 저장해야합니다. 다음과 같이 수행 할 수 있습니다.

NSURL *url = [info objectForKey:@"UIImagePickerControllerReferenceURL"]; 
NSString *ref = url.absoluteString; 
// now you can persist your string reference somewhere 

문자열 참조를 사용하여 이미지를 다시로드하는 방법?

// here we are loading the string reference to image we want to load 
NSString *ref = [self loadMyImageRef]; // loadMyImageRef is a dummy method, you can put your implementation here 

// ALAssetsLibrary provides a way to access photos/videos in gallery programmatically 
ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init]; 
[library assetForURL:[NSURL URLWithString:ref] resultBlock:^(ALAsset *asset) { 
    // here we have received the image data, now you can easily display it wherever you like 
    UIImage *image = [UIImage imageWithCGImage:asset.defaultRepresentation.fullResolutionImage]; 
    NSLog(@"Image loaded successfully!"); 
} failureBlock:^(NSError *error) { 
    NSLog(@"An error occurred while loading image: %@", error.description); 
}]; 

출처 :

http://www.to-string.com/2014/04/30/how-to-extract-string-reference-to-an-image-in-ios-and-then-load-the-image-later/