Сохранение скриншота в песочнице


Есть ли какой-либо способ сохранить скриншот в песочнице приложения или где-то, что можно легко найти, чтобы добавить к вложению электронной почты? в настоящее время я сохраняю его в Фотопленке, но не могу получить его, чтобы прикрепить к моей электронной почте

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

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

Убедитесь, что у вас есть правильный МИМ наберите здесь. Имя файла, которое вы можете установить на то, что вы хотите, это имя файла во вложении, как видно получателю.