Сохранение изображения в каталог документов и получение по электронной почте
у меня возникли проблемы, выясняя,NSBundle
& DocumentDirectory data, у меня есть изображение с камеры" imageView " что я сохраняю для NSDocumentDirectoy
а затем хотите получить его для прикрепления к электронной почте,
вот код сохранения:
- (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];
}
вот новый код:
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"];
4 ответа:
- (IBAction)getImage { NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *documentsDirectory = [paths objectAtIndex:0]; NSString *getImagePath = [documentsDirectory stringByAppendingPathComponent:@"savedImage.png"]; UIImage *img = [UIImage imageWithContentsOfFile:getImagePath]; }
Это должно помочь вам начать!
Swift 3
// Create a URL let documentsURL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first let imageURL = documentsURL?.appendingPathComponent("MyImageName.png") // save image to URL let myImage = imageView.image! // or wherever you have your UIImage do { try UIImagePNGRepresentation(myImage)?.write(to: imageURL!) } catch {} // Use the URL to retrieve the image for sharing to email, social media, etc. // docController.URL = imageURL // ...
Я силой развернул некоторые из вариантов для краткости. Используйте
guard
илиif let
в коде.
поскольку каждое приложение iPhone находится в своей собственной песочнице, у вас нет доступа к папке документов на всем устройстве. Чтобы прикрепить изображение к электронной почте, сохраните его в своей папке "Документы". Попробуйте использовать [@"~/Documents " StringByExpandingTildeInPath] чтобы получить папку локальных документов-это работает для меня. Похоже, что метод, который вы используете для прикрепления изображения к электронной почте, является правильным.
надеюсь, что это поможет,
попробуй это :
-(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]; }