2

スクリーンショットをアプリケーションのサンドボックスまたは電子メールの添付ファイルに追加するために簡単に見つけることができる場所に保存する方法はありますか?現在、カメラロールに保存していますが、メールに添付できないようです。

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);
4

2 に答える 2

1

画像データを取得してファイルに書き込むことを確認する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];

ここで正しいMIMEタイプが設定されていることを確認してください。希望するファイル名に設定できます。これは、受信者から見た添付ファイル内のファイルの名前です。

于 2012-08-14T02:26:39.270 に答える
1

これは、画像をメールに添付する方法の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

于 2012-08-14T02:34:01.817 に答える