我希望将图片的颜色数量减少,即将24位PNG文件转换为更小的8位索引色图像。
我想在iOS设备上从画廊中选择创建WhatsApp表情包,因为它允许512 X 512像素大小和小于100k文件大小。
我已经尝试了这段代码。
func resizeImageWith(image: UIImage, newSize: CGSize) -> UIImage {
let horizontalRatio = newSize.width / image.size.width
let verticalRatio = newSize.height / image.size.height
let ratio = max(horizontalRatio, verticalRatio)
let newSize = CGSize(width: image.size.width * ratio, height: image.size.height * ratio)
var newImage: UIImage
let renderFormat = UIGraphicsImageRendererFormat.default()
renderFormat.opaque = false
if #available(iOS 12.0, *) {
renderFormat.preferredRange = .standard
} else {
// Fallback on earlier versions
}
renderFormat.scale = 0.5
let renderer = UIGraphicsImageRenderer(size: CGSize(width: newSize.width, height: newSize.height), format: renderFormat)
newImage = renderer.image {
(context) in
image.draw(in: CGRect(x: 0, y: 0, width: newSize.width, height: newSize.height))
}
return newImage
}
我希望能够进行图像量化,将PNG图像中的颜色数量减少而不失去透明背景,以便将543KB的图像压缩至108KB以下,但无法进一步压缩。
谢谢