durnevdanya: https://codepen.io/Ni55aN/pen/PjRmBE
применил кластеризацию, но получилось не совсем то. На представленном фото более сглажены края, вероятно используются другие методы. Если это вообще результат машинной обработки, а не человеком в графическом редакторе
durnevdanya: попробовал сделать по описанному мою методу, но работает он нормально только для некоторых изображений https://codepen.io/Ni55aN/pen/PjRmBE. Вероятнее простым методом не обойтись, а придется использовать кластеризацию
durnevdanya: алгоритм не привязан к языку программирования. В JS все что нужно, это получить буфер с значениями яркостей каждого каналов (RGBA) для каждого пикселя. То есть массив размерностью 4*width*height. Как получить - тут
durnevdanya: библиотек не находил. Реализация не такая уж трудоемка (конечно зависит от метода), но один из простых алгоритмов
- найти N самых часто встречаемых цветов (нужно еще определить диапазоны для каждого из цвета в RGB). Можно применить и как для фото в оттенках серого, так легче
- каждый пиксель изображения заменить тем цветом, который ближе всего из найденных
зависит от системы сборки. Для Android, например, об этом заботится Gradle (в нем указывается путь к директории с библиотеками). А какая у вас система сборки, нам пока неизвестно