2016-08-11 20 views
1

首先,我对Swift很陌生,所以如果我做错了,我会很抱歉。Swift MFMailComposeViewController addAttachmentData JPG设置最大分辨率

我尝试发送包含多个图像的电子邮件作为附件。但是我可以添加所有图像,但是它们的分辨率是完整的。

是否有可能限制存储在UIImage阵列中的图像的分辨率? (现在2个图像的电子邮件将是20MB而不是488KB)

这里是一些代码:

func configuredMailComposeViewController(image: [UIImage]) -> MFMailComposeViewController { 
     let mailComposerVC = MFMailComposeViewController() 
     mailComposerVC.mailComposeDelegate = self 

     var counter = 1; 
     for img in image { 
      let imageData: NSData = UIImagePNGRepresentation(img)! 
      mailComposerVC.addAttachmentData(imageData, mimeType: "image/jpeg", fileName: "image\(counter).jpg") 
      counter += 1 
     } 

     mailComposerVC.setToRecipients(["email"]) 
     mailComposerVC.setSubject("subject") 
     mailComposerVC.setMessageBody("message", isHTML: true) 

     return mailComposerVC 
    } 

而且图像将在这里创造:

@IBAction func takePhoto(sender: UIButton) { 
     imagePicker = UIImagePickerController() 
     imagePicker.delegate = self 
     imagePicker.sourceType = .Camera 

     presentViewController(imagePicker, animated: true, completion: nil) 
} 

func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]) { 
    imagePicker.dismissViewControllerAnimated(true, completion: nil) 

    var image_taken: UIImage! 
    image_taken = info[UIImagePickerControllerOriginalImage] as? UIImage 

    var image: UIImage! 
    image = image_taken 

    imageArray.append(image) 

} 


var imagePicker: UIImagePickerController! 

而现在所说的createEmail方法:

//send data to email 
@IBAction func sendDataToServer(sender: UIBarButtonItem) { 
    composeMail(imageArray) 
} 

回答

2

您可以使用压缩来缩小其大小:

let imageData: NSData = (UIImageJPEGRepresentation(imgView.image!, 0.5) as? NSData)! 
mailComposer.addAttachmentData(imageData as Data, mimeType: "image/jpeg", fileName: "image.jpg")