12 votes

Comment charger des photos depuis une galerie de photos et les stocker dans un projet d'application ?

Je travaille sur une application qui est presque la même que les exemples de codes que j'ai trouvés ici. Mais la méthode que je veux appliquer est différente de celle des exemples de codes.
Lien : PhotoLocations

Le premier écran comporte une fenêtre d'image et deux boutons (Choisir la photo, Confirmer). En appuyant sur le bouton "Choisir une photo", on accède à un autre écran qui récupère les photos de la galerie de mon iPad. Lorsqu'une photo est choisie, l'écran actuel est supprimé et le premier écran affiche la photo choisie dans la fenêtre d'image.

Lorsque vous appuyez sur le bouton "Confirmer", la photo sera stockée dans le projet de mon application (par exemple, /resources/images/photo.jpg).

Puis-je savoir comment je peux faire cela ?

32voto

Ankit Srivastava Points 6979

Cela vous amènera à la galerie d'images et vous pourrez sélectionner l'image.

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

cela vous aidera à sélectionner l'image

- (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;
}

Et ensuite vous pouvez stocker cette image dans le répertoire des documents...

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];

Pour cliquer vous-même sur l'image, utilisez ceci

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

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

    [self presentModalViewController:imagePickerController animated:YES];
}

3voto

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

Et cette méthode déléguée renverra l'image que vous avez sélectionnée dans l'album.

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

0voto

Purushothaman Points 310
- (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];

    }

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X