|
@@ -839,6 +839,71 @@ public func zipImage(image: UIImage?, size: Int) -> Data? {
|
|
return data
|
|
return data
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+/// 压缩图片到指定大小
|
|
|
|
+/// - Parameters:
|
|
|
|
+/// - image: <#image description#>
|
|
|
|
+/// - maxLength: <#maxLength description#>
|
|
|
|
+/// - cyles: <#cyles description#>
|
|
|
|
+/// - Returns: <#description#>
|
|
|
|
+public func zipImageQuality(image: UIImage, maxLength: NSInteger, cyles: Int = 6) -> Data {
|
|
|
|
+ var compression: CGFloat = 1
|
|
|
|
+ var data = image.jpegData(compressionQuality: compression)!
|
|
|
|
+ if data.count < maxLength {
|
|
|
|
+ return data
|
|
|
|
+ }
|
|
|
|
+ var max: CGFloat = 1
|
|
|
|
+ var min: CGFloat = 0
|
|
|
|
+ var bestData: Data = data
|
|
|
|
+ for _ in 0 ..< cyles {
|
|
|
|
+ compression = (max + min) / 2
|
|
|
|
+ data = image.jpegData(compressionQuality: compression)!
|
|
|
|
+ if Double(data.count) < Double(maxLength) * 0.9 {
|
|
|
|
+ min = compression
|
|
|
|
+ bestData = data
|
|
|
|
+ } else if data.count > maxLength {
|
|
|
|
+ max = compression
|
|
|
|
+ } else {
|
|
|
|
+ bestData = data
|
|
|
|
+ break
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ return bestData
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+public func resetImgSize(sourceImage: UIImage, maxImageLenght: CGFloat, maxSizeKB: CGFloat) -> Data {
|
|
|
|
+ var maxSize = maxSizeKB
|
|
|
|
+ var maxImageSize = maxImageLenght
|
|
|
|
+ if maxSize <= 0.0 {
|
|
|
|
+ maxSize = 1024.0
|
|
|
|
+ }
|
|
|
|
+ if maxImageSize <= 0.0 {
|
|
|
|
+ maxImageSize = 1024.0
|
|
|
|
+ }
|
|
|
|
+ // 先调整分辨率
|
|
|
|
+ var newSize = CGSize(width: sourceImage.size.width, height: sourceImage.size.height)
|
|
|
|
+ let tempHeight = newSize.height / maxImageSize
|
|
|
|
+ let tempWidth = newSize.width / maxImageSize
|
|
|
|
+ if tempWidth > 1.0, tempWidth > tempHeight {
|
|
|
|
+ newSize = CGSize(width: sourceImage.size.width / tempWidth, height: sourceImage.size.height / tempWidth)
|
|
|
|
+ } else if tempHeight > 1.0, tempWidth < tempHeight {
|
|
|
|
+ newSize = CGSize(width: sourceImage.size.width / tempHeight, height: sourceImage.size.height / tempHeight)
|
|
|
|
+ }
|
|
|
|
+ UIGraphicsBeginImageContext(newSize)
|
|
|
|
+ sourceImage.draw(in: CGRect(x: 0, y: 0, width: newSize.width, height: newSize.height))
|
|
|
|
+ let newImage = UIGraphicsGetImageFromCurrentImageContext()
|
|
|
|
+ UIGraphicsEndImageContext()
|
|
|
|
+ var imageData = newImage!.jpegData(compressionQuality: 1.0)
|
|
|
|
+ var sizeOriginKB: CGFloat = CGFloat((imageData?.count)!) / 1024.0
|
|
|
|
+ // 调整大小
|
|
|
|
+ var resizeRate = 0.9
|
|
|
|
+ while sizeOriginKB > maxSize, resizeRate > 0.1 {
|
|
|
|
+ imageData = newImage!.jpegData(compressionQuality: CGFloat(resizeRate))
|
|
|
|
+ sizeOriginKB = CGFloat((imageData?.count)!) / 1024.0
|
|
|
|
+ resizeRate -= 0.1
|
|
|
|
+ }
|
|
|
|
+ return imageData!
|
|
|
|
+}
|
|
|
|
+
|
|
/// 获取开屏广告图
|
|
/// 获取开屏广告图
|
|
/// - Returns: <#description#>
|
|
/// - Returns: <#description#>
|
|
public func getLaunchImage() -> UIImage {
|
|
public func getLaunchImage() -> UIImage {
|