【发布时间】:2018-12-14 13:11:18
【问题描述】:
如何在 Swift 中将 png 图像的文件大小减少到小于 64KB 且不丢失透明背景并保持 512 X 512 像素。
我试过这段代码:
func resizeImageOriginalSize(targetSize: CGSize) -> UIImage {
var actualHeight: Float = Float(self.size.height)
var actualWidth: Float = Float(self.size.width)
let maxHeight: Float = Float(targetSize.height)
let maxWidth: Float = Float(targetSize.width)
var imgRatio: Float = actualWidth / actualHeight
let maxRatio: Float = maxWidth / maxHeight
var compressionQuality: Float = 0.5
//50 percent compression
if actualHeight > maxHeight || actualWidth > maxWidth {
if imgRatio < maxRatio {
//adjust width according to maxHeight
imgRatio = maxHeight / actualHeight
actualWidth = imgRatio * actualWidth
actualHeight = maxHeight
}
else if imgRatio > maxRatio {
//adjust height according to maxWidth
imgRatio = maxWidth / actualWidth
actualHeight = imgRatio * actualHeight
actualWidth = maxWidth
}
else {
actualHeight = maxHeight
actualWidth = maxWidth
compressionQuality = 0.4
}
}
let rect = CGRect(x: 0.0, y: 0.0, width: CGFloat(actualWidth), height: CGFloat(actualHeight))
UIGraphicsBeginImageContextWithOptions(rect.size, false, CGFloat(compressionQuality))
self.draw(in: rect)
let newImage = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return newImage!
}
但尺寸不是我所期望的。
【问题讨论】:
-
你肯定尝试过 something。不要犹豫,展示您的尝试,以免这看起来像是“为我编写代码”的问题!
-
这主要取决于图像中的颜色数量以及压缩的难易程度。
-
你试过缩放图片吗?
-
@dev 你的图片文件大小是多少?
-
@dev,如果你告诉更多关于减小大小的目的和限制 64KB 的原因,你将更有可能得到帮助。
标签: ios swift uiimage core-image ios-stickers