0

我正在尝试制作一个使用设备相机拍照然后将其附加到电子邮件的应用程序。我尝试对其进行编码,但图像未附加。我正在做的是在拍照后将首先查看它,UIImageView然后单击“完成”按钮将图像保存到沙箱并检索它以作为附件。

这是我的代码:用于保存图像...

NSData *imgData = UIImageJPEGRepresentation(attachingImage, 1);
jpgPath = [NSHomeDirectory() stringByAppendingPathComponent:@"defectImg.jpg"];
[imgData writeToFile:jpgPath atomically:YES];

对于附件...

    UIImage *myImage = [UIImage imageNamed:jpgPath];
    NSData *myImageData = UIImagePNGRepresentation(myImage);
    [tempMailCompose addAttachmentData:myImageData mimeType:@"image/jpeg" fileName:@"defectImage.jpg"];

有什么问题?

4

2 回答 2

2

[UIImage imageNamed:]不加载任意图像。它可以从你的包中加载图像(你在 Xcode 中添加的图像),就是这样。

代替UIImage *myImage = [UIImage imageNamed:jpgPath];

您想用来imageWithContentsOfFile:从磁盘加载图像。

UIImage *myImage = [UIImage imageWithContentsOfFile:jpgPath];

还:

您正在创建一个 png 图像并将其附加为 jpeg。

并且没有必要将 NSData 保存到磁盘,只需几秒钟后加载即可。将 imgData 引用传递给邮件编写器。

于 2013-07-05T01:19:46.457 回答
0

还。你可以用html写一封信。所以你决定把图片放在哪里。

MFMailComposeViewController *mailController = [MFMailComposeViewController new];
mailController.mailComposeDelegate = self;
NSString *subject = [NSString stringWithFormat:@"%@ by %@", m_art.title, [m_art.author authorFullNameByReverse:NO]];
[mailController setSubject:subject];

NSString *body = [NSString stringWithFormat:@"<html><body>Hi,<br>"];
body = [body stringByAppendingFormat:@"<img src='%@' width = '50%%' height = '50%%'><br>", [Utils urlAtArtPath:m_art.url]];
body = [body stringByAppendingFormat:@"More info here: <a href='%@'>%@</a></body></html>", m_art.url, m_art.url];

m_mail.enabled = NO;

[mailController setMessageBody:body isHTML:YES];
于 2013-07-05T01:25:40.500 回答