Saving image to Documents directory and retrieving for email attachment
- (IBAction)getImage { NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *documentsDirectory = [paths objectAtIndex:0]; NSString *getImagePath = [documentsDirectory stringByAppendingPathComponent:@"savedImage.png"]; UIImage *img = [UIImage imageWithContentsOfFile:getImagePath];}
This should get you started!
Swift 3
// Create a URLlet documentsURL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).firstlet imageURL = documentsURL?.appendingPathComponent("MyImageName.png")// save image to URLlet myImage = imageView.image! // or wherever you have your UIImagedo { try UIImagePNGRepresentation(myImage)?.write(to: imageURL!)} catch {}// Use the URL to retrieve the image for sharing to email, social media, etc.// docController.URL = imageURL// ...
I force unwrapped some of the optionals for brevity. Use guard
or if let
in your code.
Because each iPhone app is in it's own sandbox, you don't have access to a device-wide documents folder. To attach an image to an email, save the image in your own documents folder. Try using [@"~/Documents" StringByExpandingTildeInPath] to get your local documents folder - that works for me. It looks like the technique you're using for attaching the image to an email is correct.
Hope that helps,