Convert image attachment thresholds to be based on file size.

This commit is contained in:
Matthew Chen 2017-12-07 18:05:30 -05:00
parent 80ae5e0fcf
commit c918279597
1 changed files with 18 additions and 10 deletions

View File

@ -610,11 +610,7 @@ public class SignalAttachment: NSObject {
return false
}
let imageQualityTier = imageQuality.imageQualityTier()
let maxSize = maxSizeForImage(image: image,
imageUploadQuality:imageQualityTier)
if image.size.width <= maxSize &&
image.size.height <= maxSize &&
if doesImageHaveAcceptableFileSize(dataSource: dataSource, imageQuality: imageQuality) &&
dataSource.dataLength() <= kMaxFileSizeImage {
return true
}
@ -674,7 +670,8 @@ public class SignalAttachment: NSObject {
let jpgFilename = baseFilename?.appendingFileExtension("jpg")
dataSource.sourceFilename = jpgFilename
if UInt(jpgImageData.count) <= kMaxFileSizeImage {
if doesImageHaveAcceptableFileSize(dataSource: dataSource, imageQuality: imageQuality) &&
dataSource.dataLength() <= kMaxFileSizeImage {
let recompressedAttachment = SignalAttachment(dataSource : dataSource, dataUTI: kUTTypeJPEG as String)
recompressedAttachment.cachedImage = dstImage
Logger.verbose("\(TAG) Converted \(attachment.mimeType) to image/jpeg, \(jpgImageData.count) bytes")
@ -718,6 +715,17 @@ public class SignalAttachment: NSObject {
return updatedImage!
}
private class func doesImageHaveAcceptableFileSize(dataSource: DataSource, imageQuality: TSImageQuality) -> Bool {
switch imageQuality {
case .original:
return true
case .medium:
return dataSource.dataLength() < UInt(1024 * 1024)
case .compact:
return dataSource.dataLength() < UInt(400 * 1024)
}
}
private class func maxSizeForImage(image: UIImage, imageUploadQuality: TSImageQualityTier) -> CGFloat {
switch imageUploadQuality {
case .original:
@ -742,13 +750,13 @@ public class SignalAttachment: NSObject {
case .high:
return 0.9
case .mediumHigh:
return 0.7
return 0.8
case .medium:
return 0.5
return 0.7
case .mediumLow:
return 0.4
return 0.6
case .low:
return 0.3
return 0.5
}
}