2016-08-11 21 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")