Swift: как сжать apng для расширения iMessage?

Хорошо, я только недавно узнал разницу между png и apng, но у меня есть собственное расширение сообщения стикера с анимацией стикеров с использованием классов из этого базового проекта: https://github.com/radif/MSSticker-Images

Предельный размер Apple для анимированных наклеек составляет 500 КБ, но я узнал на других форумах, что даже если общий размер PNG меньше 500 КБ (у меня был), когда Xcode конвертирует ваши PNG в apngs при создании наклейки, как здесь, есть дополнительные размер добавлен. Это приводит к краху моего проекта:

func addSticker(images: [UIImage], name: String)
    {
        let sticker: MSSticker
        do {
            try sticker=MSSticker(images: images, format: .apng, frameDelay: 0.95/14.0, numberOfLoops: 0, localizedDescription: name)
        }catch MSStickerAnimationInputError.InvalidDimensions {
            fatalError("ERROR: Dimens")
        }catch MSStickerAnimationInputError.InvalidStickerFileSize {
           fatalError("ERROR: Size")
        } catch { fatalError("other error:\(error)") }

        var stickerSize = CGSize()

        let stickerView = InstrumentedStickerView(frame: CGRect(origin: CGPoint(x: 0,y :0), size: stickerSize))
        stickerView.sticker = sticker
        stickerView.delegate = self

        stickerPack.append(stickerView)
    }

Я загружаю свои изображения программно из папки, а не из ресурсов: И для начала он потерпел крах, когда у меня было более 11 618x618 pngs, и теперь я могу получить больше изображений с меньшими размерами 300x300, но я не хочу делать анимацию с неопределенными ограничениями числа кадров.

Есть ли другой способ, кроме уменьшения размеров, чтобы уменьшить размер? Я нашел этот https://github.com/onevcat/APNGKit если я использую его для ручного преобразования моих png-файлов в apng, остановит ли добавление дополнительного размера?

0 ответов

Другие вопросы по тегам