Convert image attachment thresholds to be based on file size.

pull/1/head
Matthew Chen 7 years ago
parent 80ae5e0fcf
commit c918279597

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

Loading…
Cancel
Save