Сохранить 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
), который работал намного быстрее в моих тестах.