72 votes

Enregistrement de l'image dans le répertoire Documents et récupération des pièces jointes

Je ne parviens pas à comprendre les données NSBundle & DocumentDirectory, j’ai une " imageView " d’appareil photo que je sauvegarde sur le NSDocumentDirectoy et que je souhaite ensuite récupérer pour l’attacher à un courrier électronique,

Voici le code de sauvegarde:

 - (IBAction)saveImage {
    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];   
}
 

Voici le nouveau code de données:

     NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];
    NSString *appFile = [documentsDirectory stringByAppendingPathComponent:@"savedImage.png"];
    NSData *myData = [[[NSData alloc] initWithContentsOfFile:appFile] autorelease];
    [picker addAttachmentData:myData mimeType:@"image/png" fileName:@"savedImage"];
 

66voto

Jordan Points 14134
 - (IBAction)getImage {
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,     NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];
    NSString *getImagePath = [documentsDirectory stringByAppendingPathComponent:@"savedImage.png"];
    UIImage *img = [UIImage imageWithContentsOfFile:getImagePath];
}
 

Cela devrait vous aider à démarrer!

0voto

S R Nayak Points 1159

Essayez celui-ci :

 -(void)setProfilePic
{
  NSArray *docpaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
  NSString *documentsDirectory = [docpaths objectAtIndex:0];
  NSString *imagePath = [documentsDirectory stringByAppendingPathComponent:@"Image.png"];

  NSData *imgData = [[NSData alloc] initWithContentsOfURL:[NSURL fileURLWithPath:imagePath]];
  UIImage *thumbNail = [[UIImage alloc] initWithData:imgData];
  [profilePic_btn setBackgroundImage:thumbNail forState:UIControlStateNormal];
}

0voto

Ben Gotow Points 7627

Parce que chaque application sur iPhone est dans son propre bac à sable, vous n'avez pas accès à un dispositif de documents à l'échelle du dossier. Pour joindre une image à un e-mail, enregistrez l'image dans votre dossier documents. Essayez d'utiliser [@"~/Documents" StringByExpandingTildeInPath] pour obtenir vos locaux dossier de documents - qui fonctionne pour moi. Il ressemble à la technique que vous utilisez pour la fixation de l'image à un e-mail est correcte.

Hope qui aide,

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