iOS Swift Image квантование, чтобы уменьшить количество цветов в изображении PNG - PullRequest
0 голосов
/ 18 декабря 2018

Я хочу уменьшить количество цветов в изображении, то есть 24-битных файлов PNG, до меньших 8-битных индексированных цветных изображений.

Я хочу создавать наклейки WhatsApp на устройстве iOS, выбирая их из галереи, так как это позволило размер файла 512 X 512 пикселей и размер файла менее 100 КБ

Я связал этот код

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
}

и способен сжимать до 108 КБ только для изображения 543 КБ, не может сжать меньше, чем это.поэтому я хочу помочь сделать квантование изображения, которое уменьшает количество цветов в изображениях PNG без потери прозрачного фона в Swift 4.2.

Спасибо

...