2013-10-26 4 views
-3

У меня есть следующий код, который запускает приложение для камеры, и пользователь может выбрать «использовать фотографию». Однако ничего не происходит.Сохранение изображения из камеры в каталог документов

if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera] == YES) { 
     UIImagePickerController *imagePickerController = [[UIImagePickerController alloc]init]; 
     imagePickerController.sourceType = UIImagePickerControllerSourceTypeCamera; 

     [self presentModalViewController:imagePickerController animated:YES]; 
    } 

Как я могу получить UIimage от этого и сохранить его в фотоальбоме. В идеале я хотел бы сохранить это в каталоге документов и знать, как сделать эту часть. Благодаря!

ответ

2

Используй этот код:

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

    UIImage *image = [info objectForKey:UIImagePickerControllerOriginalImage]; 
    NSData * imageData = UIImagePNGRepresentation(image); 

    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
    NSString *documentsDirectory = [paths objectAtIndex:0]; 
    NSString *savedImagePath = [documentsDirectory stringByAppendingPathComponent:@"savedImage.png"]; 
    [imageData writeToFile:savedImagePath atomically:NO]; 

    [picker dismissViewControllerAnimated:YES completion:nil]; 
} 
+0

Всплывающее окно камеры больше не отображается. Я использовал NSDictionary * dict = [[NSDictionary alloc] init]; UIImagePickerController * pict = [[UIImagePickerController alloc] init]; [сам изображениеPickerController: pict сделалFinishPickingMediaWithInfo: dict]; для вызова метода, который вы мне предоставили – user2402616

+0

Попробуйте заменить информацию своим именем. –

1

Я думаю, что это поможет,

//you have to set the delegate which clicking the button of camera 

imagePickerController.delegate = self; 


//This Delegate method will call 

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

    [picker dismissViewControllerAnimated:YES completion:nil]; 
    UIImage* selectedImage = [info objectForKey:UIImagePickerControllerOriginalImage]; 

    NSString *path = [[self pathToPatientPhotoFolder] stringByAppendingPathComponent:[NSString stringWithFormat:@"imageName.png"]]; 

    NSError * error11 = nil; 

    [post.getData writeToFile:path options:NSDataWritingAtomic error:&error11]; 

} 



//This method is useful for the get the Documentry path 

    - (NSString *)pathToPatientPhotoFolder { 
     NSString *documentsDirectory = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, 
                      NSUserDomainMask, 
                      YES) lastObject]; 
     NSString *myalbumpath = [documentsDirectory stringByAppendingPathComponent:@"MYAlbum"]; 

     // Create the folder if necessary 
     BOOL isDir = NO; 
     NSFileManager *fileManager = [[NSFileManager alloc] init]; 
     if (![fileManager fileExistsAtPath:myalbumpath 
           isDirectory:&isDir] && isDir == NO) { 
      [fileManager createDirectoryAtPath:myalbumpath 
        withIntermediateDirectories:NO 
            attributes:nil 
             error:nil]; 
     } 
     return myalbumpath; 
    } 

Наслаждайтесь кодированием

+0

Я получаю «использование незаявленного идентификатора для комментариев и сообщений. – user2402616

+0

, где вы получили Undeclared identifier.can, пожалуйста, скажите мне – Romance

+0

. Я был отредактирован answer.now, вы не столкнулись с проблемой. Пожалуйста, снова проверьте ответ. – Romance

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

UIImage* originalImage = nil; 
    originalImage = [info objectForKey:UIImagePickerControllerEditedImage]; 
    if(originalImage==nil) 
    { 
     originalImage = [info objectForKey:UIImagePickerControllerOriginalImage]; 
    } 
    if(originalImage==nil) 
    { 
     originalImage = [info objectForKey:UIImagePickerControllerCropRect]; 
    } 



    [addImageOutlet setImage:originalImage forState:UIControlStateNormal]; 
     [self saveBackgroundImageInDocumentDirectory:originalImage]; 


    [self dismissViewControllerAnimated:YES completion:nil]; 

} 
1

addImageOutlet для какого типа объекта

+0

can u tel m plz addImageOutlet для какого типа объекта –

Смежные вопросы