我正在尝试制作一个应用程序,使用设备的相机拍摄照片,然后将其附加到电子邮件中。我试着给它编码,但图像没有附加。我所做的是,拍完照片后,它将首先在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"];
可能出了什么问题?
[UIImage imageNamed:]
不加载任意图像。它可以从你的捆绑包中加载图像(你在Xcode中添加的图像),就这样
代替UIImage *myImage = [UIImage imageNamed:jpgPath];
您希望使用imageWithContentsOfFile:
从磁盘加载映像。
UIImage *myImage = [UIImage imageWithContentsOfFile:jpgPath];
还有:
您正在创建一个png图像,并将其附加为jpeg。
而且,不必将NSData保存到磁盘,只需在几秒钟后加载即可。将imgData引用传递给邮件编写器。
还有。你可以用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];