2014-01-29 4 views
3

카메라에서 사진 라이브러리로 이미지를 저장하고 저장된 이미지의 URL을 저장하려고합니다. 내 코드 :사진 라이브러리에 이미지 저장 및 저장된 이미지의 URL 가져 오기

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info { 

ALAssetsLibrary *library = [[ALAssetsLibrary alloc]init]; 
[library writeImageToSavedPhotosAlbum:(__bridge CGImageRef)([info objectForKey:UIImagePickerControllerOriginalImage]) 
          orientation:ALAssetOrientationUp completionBlock:^(NSURL *assetURL, NSError *error) { 
           if(error == nil) { 
            _myImageUrl = [NSString stringWithFormat:@"%@",assetURL]; 
            NSLog(@"%@",assetURL); 
           } else NSLog(@"%@",error); 
          }]; 

[picker dismissViewControllerAnimated:YES completion:nil];} 

제 문제점은 assetUrl이 항상 NULL이라는 것입니다. 어떤 아이디어? 감사합니다.

+0

이 게시물과 관련이있을 수 있습니다. iOS7 버그 일 수 있습니다. http://stackoverflow.com/questions/20813540/alassetslibrarywritevideocompletionblock-return-undefined-values ​​: [1] [1] [ALAssetsLibraryWriteVideoCompletionBlock 정의되지 않은 값을 반환] – GregP

답변

0

마지막으로, 더 많은 것을 읽은 후에, 나는 대답을 찾았습니다. 함수의 첫 번째 매개 변수는 CGImageRef이고 (__bridge CGImageRef)은 예상 한대로 작동하지 않습니다. 하지만 CGImage 메서드를 UIImage 개체라고 부르면 작동합니다. 이렇게하는 올바른 방법은 다음과 같습니다.

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info { 

    ALAssetsLibrary *library = [[ALAssetsLibrary alloc]init]; 
    CGImageRef image = [[info objectForKey:UIImagePickerControllerOriginalImage] CGImage]; 
    [library writeImageToSavedPhotosAlbum:image 
           orientation:ALAssetOrientationUp 
          completionBlock:^(NSURL *assetURL, NSError *error) { 
            if(error == nil) { 
             _myImageUrl = [NSString stringWithFormat:@"%@",assetURL]; 
             NSLog(@"%@",assetURL); 
            } else NSLog(@"%@",error); 
           }]; 

    self.toDoImage.image = [info objectForKey:UIImagePickerControllerOriginalImage]; 
    [picker dismissViewControllerAnimated:YES completion:nil]; 
} 
관련 문제