【问题标题】:Objective C: Take A Photo and Attach in EMail目标 C:拍照并附在电子邮件中
【发布时间】:2026-01-09 08:30:02
【问题描述】:

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

这是我的代码: 保存图片...

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

可能出了什么问题?

【问题讨论】:

    标签: ios objective-c uiimage uiimagepickercontroller mfmailcomposeviewcontroller


    【解决方案1】:

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

    而不是UIImage *myImage = [UIImage imageNamed:jpgPath];

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

    UIImage *myImage = [UIImage imageWithContentsOfFile:jpgPath];
    

    还有:

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

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

    【讨论】:

    • 谢谢!我确实将 imagData 传递给了邮件作曲家。它现在正在工作。
    【解决方案2】:

    还有。你可以用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];
    

    【讨论】:

    • 什么是 Utils 和 m_mail?
    最近更新 更多