Итак, я начинаю рассматривать «простое» уменьшение цвета для применения к изображениям. Я провел последний день, исследуя, как это работает, и сумел найти то, что кажется достойным алгоритмом для экспериментов здесь: Median cut algorithmПрименение выходной палитры алгоритма сокращения цвета срединной резки к исходному изображению
Выходной сигнал здесь представляет собой палитру из n цветов. Мне еще предстоит убедиться, что этот алгоритм работает, но я предполагаю, что это так. Я бы хотел сделать это и применить его к изображению, из которого была создана палитра.
Я не могу сказать, что я хорошо разбираюсь в форматах сжатия цветов и всех глубоких знаниях, когда речь заходит о изображениях, но мне интересно, как я могу применить палитру, не начинать с формата изображения, который приходит с индексированной палитрой (т.е. GIF).
Я думаю, что для каждого пикселя я вычисляю разницу между цветом текущего пикселя и каждым цветом в палитре и заменяю этот пиксель цветом палитры с наименьшей разницей. Будет ли это жизнеспособным способом подхода?
Примечание. Я просмотрел различные библиотеки (ImageMagick), но они кажутся немного излишними; самое большее, что я буду делать с манипуляциями с изображениями, будет уменьшать цветовую палитру - ничего сложнее этого. Вот почему я думаю, что реализация этого алгоритма будет самым простым подходом для моих нужд.
Просто FYI для всех пользователей Qt собрата - этот алгоритм прекрасно интегрируется в Qt и прекрасно работает. Нулевые изменения необходимы, чтобы заставить его работать. – giraffee
Если вы хотите сыграть с Median Cut, вы можете настроить существующую реализацию: https://github.com/pornel/improved-pngquant/ (он имеет быстрое переназначение и поддержку PNG) – Kornel