Сохранить CGImageRef как PNG-8

Мне интересно, как сохранить CGImageRef как файл PNG-8 на основе палитры.

У меня есть следующий код для PNG-24:

CFURLRef url = (CFURLRef)[[NSURL alloc] initFileURLWithPath:path];

CGImageDestinationRef destination = CGImageDestinationCreateWithURL(url, kUTTypePNG, 1, NULL);
CGImageDestinationAddImage(destination, image, properties);
CGImageDestinationFinalize(destination);

Глядя, чтобы преобразовать это в PNG-8 сейчас. Если мне нужно использовать libpng, как бы вы переписали это?

1 ответ

Решение

Хм, ответов нет:) Я думаю, что решение может заключаться в использовании libpng, но я еще не пробовал. Я отмечу это как принятый ответ на данный момент, но если кто-то может предложить хороший совет, я с радостью изменил бы это!

Благодарю.

Редактировать:

В итоге я взломал https://github.com/pornel/pngquant чтобы заставить его принимать CGImageRefs и сохранять файлы PNG-8. Это было не красиво. В итоге я фактически перешел на GIF (kUTTypeGIF), который работал намного быстрее в моих тестах.

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