2011-09-30 11 views
12

Sto lavorando a un'applicazione che è quasi uguale ai codici di esempio che ho trovato qui. Ma il metodo che voglio fare è diverso dai codici di esempio.
Link: PhotoLocationsCome caricare le foto dalla galleria fotografica e memorizzarle nel progetto di applicazione?

La prima schermata avrà un ImageView e 2 pulsanti (Scegli foto, Conferma). Quando si tocca il pulsante "Scegli foto", si passa a un'altra schermata che recupera le foto dalla galleria fotografica del mio iPad. Quando viene scelta una foto, la schermata corrente verrà chiusa e si tornerà alla prima schermata visualizzando la foto selezionata su ImageView.

Quando il pulsante "Conferma" viene toccato, la foto verrà archiviata nel progetto della mia applicazione (ad esempio /resources/images/photo.jpg).

May so come posso fare questo?

+0

in iPhone è necessario utilizzare UIImagePickerController per recuperare le immagini dalla galleria e si possono avere in ur app salvandola in NSDocumentsDirectory – booleanBoy

+0

Sì grazie, ma io preferirei avere alcuni codici di esempio così che posso riferire. – Lloydworth

+2

google "Riferimento UIImagePickerController". Vai al sito Web di Apple. – Akshay

risposta

32

Questo vi porterà alla galleria di immagini ed è possibile selezionare l'immagine.

UIImagePickerController *imagePickerController = [[UIImagePickerController alloc]init]; 
imagePickerController.delegate = self; 
imagePickerController.sourceType = UIImagePickerControllerSourceTypePhotoLibrary; 
[self presentViewController:imagePickerController animated:YES completion:nil]; 

questo vi aiuterà a scegliere l'immagine

- (void)imagePickerController:(UIImagePickerController *)picker 
    didFinishPickingImage:(UIImage *)image 
       editingInfo:(NSDictionary *)editingInfo 
{ 
    // Dismiss the image selection, hide the picker and 

    //show the image view with the picked image 

    [picker dismissViewControllerAnimated:YES completion:nil]; 
    //UIImage *newImage = image; 
} 

E poi è possibile memorizzare questa immagine nella cartella documenti ...

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,  NSUserDomainMask, YES); 
NSString *documentsDirectory = [paths objectAtIndex:0]; 
NSString *savedImagePath = [documentsDirectory stringByAppendingPathComponent:@"savedImage.png"]; 
UIImage *image = imageView.image; // imageView is my image from camera 
NSData *imageData = UIImagePNGRepresentation(image); 
[imageData writeToFile:savedImagePath atomically:NO]; 

Per cliccando l'immagine da soli utilizzare questo

- (IBAction) takePhoto:(id) sender 
{ 
    UIImagePickerController *imagePickerController = [[UIImagePickerController alloc] init]; 

    imagePickerController.delegate = self; 
    imagePickerController.sourceType = UIImagePickerControllerSourceTypeCamera; 

    [self presentModalViewController:imagePickerController animated:YES]; 
} 
+0

Posso sapere come posso salvare l'immagine da ImageView nella directory dei documenti? – Lloydworth

+2

Ho appena modificato la mia risposta sopra ... –

+0

Ho appena pensato ad una funzione extra. Nella prima schermata, cambierò il pulsante "Scegli foto" in "Sfoglia da galleria fotografica" e aggiungerò anche un nuovo pulsante "Scatta una nuova foto". Toccando su quel pulsante, la mia applicazione avvierà la fotocamera e una volta che l'utente scatta una foto, tornerà alla prima schermata che mostra l'immagine sul ImageView che può essere salvata anche nella mia cartella documenti. – Lloydworth

3
UIImagePickerController *cardPicker = [[UIImagePickerController alloc]init]; 
cardPicker.allowsEditing=YES; 
cardPicker.delegate=self; 
cardPicker.sourceType = UIImagePickerControllerSourceTypeSavedPhotosAlbum; 
[self presentModalViewController:appDelegate.cardPicker animated:YES]; 
[cardPicker release]; 

E questo metodo delegato restituirà l'immagine u selezionare dall'album

-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage:(UIImage *)img editingInfo:(NSDictionary *)editInfo 
{ 
    [[picker parentViewController] dismissModalViewControllerAnimated:YES]; 
    noImage.image=img; 
} 
+0

dove noImage è UIImageView in cui sto visualizzando l'immagine selezionata dall'album ... – booleanBoy

+0

Posso sapere come posso memorizzare noImage nella directory dei documenti? – Lloydworth

0

- (IBAction)UploadPhoto:(id)sender { 
 
    
 
    UIActionSheet *actionSheet = [[UIActionSheet alloc] initWithTitle:@"Please Select Your Option"delegate:self cancelButtonTitle:@"Cancel" destructiveButtonTitle:nil otherButtonTitles:@"Camera", @"Gallery",nil]; 
 
    
 
    [actionSheet showInView:self.view]; 
 
    
 
    UITableViewCell *clickedCell = (UITableViewCell *)[[sender superview] superview]; 
 
    
 
    NSIndexPath *clickedButtonPath = [jobstable indexPathForCell:clickedCell]; 
 
    
 
    isSectionIndex = clickedButtonPath.section; 
 
    isRowIndex  = clickedButtonPath.row; 
 
    
 
} 
 

 

 
-(void)actionSheet:(UIActionSheet *)actionSheet didDismissWithButtonIndex:(NSInteger)buttonIndex{ 
 
    
 
    
 
    NSLog(@"From didDismissWithButtonIndex - Selected Option: %@", [actionSheet buttonTitleAtIndex:buttonIndex]); 
 
    
 
    NSString*image=[actionSheet buttonTitleAtIndex:buttonIndex]; 
 
    
 
    if ([[actionSheet buttonTitleAtIndex:buttonIndex] isEqualToString:@"Camera"]) { 
 
     
 
     if (![UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) 
 
     { 
 
      UIAlertView* alert = [[UIAlertView alloc] initWithTitle:nil message:@"Device Camera Is Not Working" delegate:nil cancelButtonTitle:nil otherButtonTitles:@"OK", nil]; 
 
      [alert show]; 
 
      return; 
 
     } 
 
     else{ 
 
      
 
      UIImagePickerController *picker = [[UIImagePickerController alloc] init]; 
 
      picker.delegate = self; 
 
      picker.allowsEditing = YES; 
 
      picker.sourceType = UIImagePickerControllerSourceTypeCamera; 
 
      
 
      [self presentViewController:picker animated:YES completion:NULL]; 
 
      
 
     } 
 
    } 
 
    
 
    else if ([[actionSheet buttonTitleAtIndex:buttonIndex] isEqualToString:@"Gallery"]){ 
 
     
 
     
 
     UIImagePickerController *pickerView = [[UIImagePickerController alloc] init]; 
 
     pickerView.allowsEditing = YES; 
 
     pickerView.delegate = self; 
 
     [pickerView setSourceType:UIImagePickerControllerSourceTypeSavedPhotosAlbum]; 
 
     [self presentViewController:pickerView animated:YES completion:nil]; 
 
     
 
    } 
 
    
 
} 
 

 
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info{ 
 
UIImage* orginalImage = [info objectForKey:UIImagePickerControllerOriginalImage]; 
 
     
 
     
 
     
 
     NSIndexPath *indexPath = [NSIndexPath indexPathForRow:isRowIndex inSection:isSectionIndex]; 
 
     
 
     UITableViewCell *cell = [jobstable cellForRowAtIndexPath:indexPath]; 
 
     
 
     UIImageView *tableIMAGE=(UIImageView *)[cell.contentView viewWithTag:19]; 
 
     
 
     tableIMAGE.image=orginalImage; 
 
     
 
    answersARRAY[indexPath.row] = [NSString stringWithFormat:@"-1,%@,%@,",answersARRAY[indexPath.row],imageStris]; 
 

 
    
 
     
 
     [self dismissViewControllerAnimated:YES completion:nil]; 
 
     
 
     
 
    } 
 
    
 
    - (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker { 
 
     
 
     [picker dismissViewControllerAnimated:YES completion:NULL]; 
 
    
 
    }

+0

Questa è una nuova risposta a una vecchia domanda con una risposta già accettata. Qual è la tua risposta a condizione che la risposta accettata no? Inoltre, aggiungere una spiegazione su come funziona questo codice potrebbe aiutare i futuri visitatori. – JAL

Problemi correlati