0

在使用 UIImagePickerController 拍照后,我正在使用 MessageUI 框架通过电子邮件发送和图像。当我拍照然后调用邮件邮件消息界面时,我得到了撰写窗口。在 iPod touch (iOS 4.3.5) 和 iPad (iOS 5.0.1) 上进行测试时,我在撰写窗口的正文中看到了图像附件。在 iPhone (4S iOS 5.0.1) 上进行测试时,图像不会出现在撰写窗口中,而是我看到一个图像附件大小的框,其中嵌入了一个带有“?”的蓝色小框。在里面。

在这两种情况下,当发送邮件消息时,图像都会出现在邮件应用程序(iOS 设备和 Mac)中收到的消息中。

我能做些什么来解决这个问题?

更新:我通过更改解决了这个问题:

NSData *imageData = [NSData dataWithData:UIImagePNGRepresentation(imageToSend)]

到:

NSData *imageDataJPG = [NSData dataWithData:UIImageJPEGRepresentation(imageToSend, 1.0)];

我在 UIKit 文档中看不到 UIImagePNGRepresentation 中有任何内容无法在 iPhone 上运行...

(Xcode 4.2.1、ARC、5.0 SDK、部署目标 4.3)

这是编写消息的代码:

-(void)displayComposerSheet { MFMailComposeViewController *mailPicker = [[MFMailComposeViewController alloc] init]; mailPicker.mailComposeDelegate = self;

[mailPicker setSubject:@"Photo"];

NSData *imageData = [NSData dataWithData:UIImagePNGRepresentation(imageToSend)];
[mailPicker addAttachmentData:imageData mimeType:@"image/png" fileName:@"Photo"];


// Fill out the email body text.

NSString *line1 = [NSString stringWithFormat: @"I took this photo on my %@.\n", [[UIDevice currentDevice] model]];


NSString *body = [NSString stringWithFormat:@"%@", line1];
[mailPicker setMessageBody:body isHTML:NO];

// Present the mail composition interface.
[self presentModalViewController:mailPicker animated:YES];

}

4

2 回答 2

1

图像大小受到限制,因此如果您发送的图像大于某个尺寸,您将获得上述效果。

我查看了我自己的代码,发现我有

#define MAX_MAIL_DIM 1536

这似乎是 1024 * 1.5。抱歉,我不记得我是如何得出这个数字的,但我怀疑这是反复试验。

于 2012-02-11T21:58:40.507 回答
1

larik,您关于使用 JPEG 作为数据类型的建议效果很好。无论如何,这种大小的 PNG 文件太大了——大约 10MB。这是 JPEG NSData 的代码:

if ([MFMailComposeViewController canSendMail]) {
    picker = [[MFMailComposeViewController alloc] init];
    [picker setMailComposeDelegate:self];
    [picker setSubject:@"My Picture"];
    NSString *emailBody = @"";
    [picker setMessageBody:emailBody isHTML:YES];
    NSData *data = UIImageJPEGRepresentation(tempImage, 0);
    [picker addAttachmentData:data mimeType:@"image/jpg" fileName:@"CameraImage"];
}
于 2012-03-26T01:44:29.423 回答