Explorar el Código

resize image before sending (scale it down in order to not send huge images)

Alla Reinsch hace 6 años
padre
commit
5b0149ade7
Se han modificado 1 ficheros con 18 adiciones y 2 borrados
  1. 18 2
      deltachat-ios/ChatViewController.swift

+ 18 - 2
deltachat-ios/ChatViewController.swift

@@ -385,12 +385,28 @@ extension ChatViewController: MessagesLayoutDelegate {
     }
     
     fileprivate func saveImage(image: UIImage) -> String? {
-        guard let data = image.jpegData(compressionQuality: 1) else {
+        guard let directory = try? FileManager.default.url(for: .documentDirectory, in: .userDomainMask, appropriateFor: nil, create: false) as NSURL else {
             return nil
         }
-        guard let directory = try? FileManager.default.url(for: .documentDirectory, in: .userDomainMask, appropriateFor: nil, create: false) as NSURL else {
+        
+        let size = image.size.applying(CGAffineTransform(scaleX: 0.2, y: 0.2))
+        let hasAlpha = false
+        let scale: CGFloat = 0.0
+        
+        UIGraphicsBeginImageContextWithOptions(size, !hasAlpha, scale)
+        image.draw(in: CGRect(origin: CGPoint.zero, size: size))
+        
+        let _scaledImage = UIGraphicsGetImageFromCurrentImageContext()
+        UIGraphicsEndImageContext()
+        
+        guard let scaledImage = _scaledImage else {
             return nil
         }
+        
+        guard let data = scaledImage.jpegData(compressionQuality: 0.9) else {
+            return nil
+        }
+        
         do {
             let path = directory.appendingPathComponent("attachment.jpg")
             try data.write(to: path!)