فهرست منبع

added image compression

Bastian van de Wetering 6 سال پیش
والد
کامیت
870a250cea
2فایلهای تغییر یافته به همراه13 افزوده شده و 4 حذف شده
  1. 5 4
      deltachat-ios/Coordinator/AppCoordinator.swift
  2. 8 0
      deltachat-ios/Helper/Extensions.swift

+ 5 - 4
deltachat-ios/Coordinator/AppCoordinator.swift

@@ -417,10 +417,11 @@ class ChatViewCoordinator: Coordinator {
 				self?.navigationController.dismiss(animated: true, completion: nil)
 
 				DispatchQueue.global().async {
-					if let pickedImage = image {
-						let width = Int32(exactly: pickedImage.size.width)!
-						let height = Int32(exactly: pickedImage.size.height)!
-						let path = Utils.saveImage(image: pickedImage)
+					if let compressedImage = image?.dcCompress() {
+						// at this point image is compressed by 85% by default
+						let width = Int32(exactly: compressedImage.size.width)!
+						let height = Int32(exactly: compressedImage.size.height)!
+						let path = Utils.saveImage(image: compressedImage)
 						let msg = dc_msg_new(mailboxPointer, DC_MSG_IMAGE)
 						dc_msg_set_file(msg, path, "image/jpeg")
 						dc_msg_set_dimension(msg, width, height)

+ 8 - 0
deltachat-ios/Helper/Extensions.swift

@@ -143,6 +143,7 @@ extension UIImage {
 		case low     = 0.25
 		case medium  = 0.5
 		case high    = 0.75
+		case dcDefault = 0.85
 		case highest = 1
 	}
 
@@ -153,4 +154,11 @@ extension UIImage {
 		return jpegData(compressionQuality: jpegQuality.rawValue)
 	}
 
+	func dcCompress() -> UIImage? {
+		guard let data = jpeg(.dcDefault) else {
+			return nil
+		}
+		return UIImage(data: data)
+	}
+
 }