Я пытаюсь уменьшить количество цветов на изображении ниже, используя -remap в imagemagick.
colortable.png, который состоит из этих двух цветов A12E64, FF0000
Используя следующий код:
convert olympic-logo.png +dither -remap colortable.png olympic-logo-remap.png
Выход:
олимпийское-логотип-remap.png
Ожидаемый результат:
олимпийское-логотип-expected.png
Есть ли способ игнорировать прозрачную область, чтобы она не отображалась для получения ожидаемого результата?
Спасибо и больше силы.
Вы можете поместить копию оригинального изображения в одну сторону, прежде чем делать то, что вы уже сделали, а затем восстановить альфа из этого потом, например так:
convert rings.png -write MPR:orig +dither -remap colortable.png MPR:orig -compose copyalpha -composite result.png
где MPR:
это «Регистр программ памяти», то есть именованный кусок оперативной памяти.
Ваше входное изображение не имеет постоянного цвета фона. Это в основном черный с большой белой каймой. Вы можете увидеть это, если выключите альфа:
convert olympic-logo.png -alpha off aoff.png
Таким образом, вы можете изменить команду Марка Сетчелла, добавив -фон черный альфа фон к этому.
convert xc:"#A12E64" xc:"#FF0000" +append colortable.png
convert olympic-logo.png -background black -alpha background -write MPR:orig +dither -remap colortable.png MPR:orig -compose copy_opacity -composite result.png
Теперь это работает для вас? Если нет, попробуйте сделать фон полностью белым.