Сохранение скриншота в песочнице
Есть ли какой-либо способ сохранить скриншот в песочнице приложения или где-то, что можно легко найти, чтобы добавить к вложению электронной почты? в настоящее время я сохраняю его в Фотопленке, но не могу получить его, чтобы прикрепить к моей электронной почте
NSArray *path = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentDirectory = [path objectAtIndex:0];
NSString *png = @".png";
NSString *filename = [drawquestion stringByReplacingOccurrencesOfString:@" " withString:@""];
NSString *link = [NSString stringWithFormat: @"%@%@%@", documentDirectory,filename,png];
NSString *imagePath = [NSHomeDirectory() stringByAppendingPathComponent:link];
NSLog(link);
UIImageWriteToSavedPhotosAlbum(viewImage, drawquestion, nil, nil);
2 ответа:
Вот 2 голых примера того, как прикрепить изображение к электронной почте.
// with UIImage * image; MFMailComposeViewController * mfcvc = [[[MFMailComposeViewController alloc] init] autorelease]; NSData * imageData = UIImagePNGRepresentation(image); [mfcvc addAttachmentData:imageData mimeType:@"image/png" fileName:@"demo"]; [self.viewController presentModalViewController:mfcvc animated:YES]; // with UIImage * image; and float compression_quality; between 0.0 and 1.0 MFMailComposeViewController * mfcvc = [[[MFMailComposeViewController alloc] init] autorelease]; NSData * imageData = UIImageJPEGRepresentation(image, compression_quality); [mfcvc addAttachmentData:imageData mimeType:@"image/jpeg" fileName:@"demo"]; [self.viewController presentModalViewController:mfcvc animated:YES];
Чтобы сохранить изображение в каталоге документов в песочнице приложения
NSArray *path = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *documentDirectory = [path objectAtIndex:0]; NSString *png = @".png"; NSString *filename = [drawquestion stringByReplacingOccurrencesOfString:@" " withString:@""]; NSString *imagePath = [documentDirectory stringByAppendingPathComponent:[NSString stringWithFormat:@"%@%@",filename, png]]; [imageData writeToFile:imagePath atomically:YES];
PS
Я очистил конструкцию пути, похоже, ваш код имеет путь, подобный
/var / mobile / Applications / APP_ID//var/mobile/Applications/APP_ID / Documents / filename.png
Вы должны проверить
writeToFile:atomically:
Вы получаете данные изображения, и записать их в файл, это сохранит в песочнице приложения.Проверьте это для некоторого примера кода: http://blog.objectgraph.com/index.php/2010/04/05/download-an-image-and-save-it-as-png-or-jpeg-in-iphone-sdk/
NSString *docDir = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0]; NSLog(@"%@",docDir); NSLog(@"saving png"); NSString *pngFilePath = [NSString stringWithFormat:@"%@/test.png",docDir]; // You should swap data for your image data NSData *data = [NSData dataWithData:UIImagePNGRepresentation(image)]; [data writeToFile:pngFilePath atomically:YES];
Затем вы можете использовать метод
addAttachmentData:mimeType:fileName:
в классеMFMailComposeViewController
для прикрепления вложения (на самом деле вам даже не нужно сохранять образ на диск):MFMailComposeViewController * mailVC = [[MFMailComposeViewController alloc] init]; NSData *data; // this is the data from earlier [mailVC addAttachmentData:data mimeType:@"image/png" fileName:@"myfilename"]; [self presentModalViewController:mailVC animated:YES];
Убедитесь, что у вас есть правильный МИМ наберите здесь. Имя файла, которое вы можете установить на то, что вы хотите, это имя файла во вложении, как видно получателю.