Предполагая, что предоставленное вами изображение называется palette.png
, я думаю, что вы хотите переназначить все цвета входного изображения в эту палитру, а затем выполнить уменьшение цвета на основе интерполяции ближайшего соседа до 16 цветов, что даст вам команда, подобная этой:
magick +dither input.png -remap palette.png -interpolate nearest -colors 16 result.png
Если это не то, что вы хотите, вы можете отладить вышеперечисленное, разбив его на шаги и посмотрев на частичные результаты:
magick +dither input.png -remap palette.png partial.png
И :
magick partial.png -interpolate nearest -colors 16 result.png
Вы можете поэкспериментировать с заменой +dither
на -dither Riemersma
или -dither FloydSteinberg
.
Обратите внимание, что с помощью "Ближайший сосед" интерполяция позволяет избежать введения каких-либо новых цветов в изображение - она просто использует ближайшего соседа из существующего изображения вместо усреднения или вычисления новых пикселей.