Уменьшить цвета изображения на основе таблицы colorlookup, исключая прозрачный - PullRequest
0 голосов
/ 15 сентября 2018

Я пытаюсь уменьшить количество цветов на изображении ниже, используя -remap в imagemagick.

олимпийское-logo.png olympic-logo.png

colortable.png, который состоит из этих двух цветов A12E64, FF0000

enter image description here

Используя следующий код:

convert olympic-logo.png +dither -remap colortable.png olympic-logo-remap.png

Выход: олимпийский-логотип-remap.png

enter image description here

Ожидаемый результат: олимпийское-логотип-expected.png enter image description here

Есть ли способ игнорировать прозрачную область, чтобы она не отображалась для получения ожидаемого результата?

Спасибо и больше силы.

Ответы [ 2 ]

0 голосов
/ 15 сентября 2018

Ваше входное изображение не имеет постоянного цвета фона. Это в основном черный с большой белой каймой. Вы можете увидеть это, если выключите альфа:

convert olympic-logo.png -alpha off aoff.png

enter image description here

Таким образом, вы можете изменить команду Марка Сетчелла, добавив к ней -background black -alpha background .

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

enter image description here

Это сейчас работает для вас? Если нет, попробуйте сделать фон полностью белым.

0 голосов
/ 15 сентября 2018

Вы можете положить копию оригинального изображения в одну сторону, прежде чем делать то, что вы уже сделали, а затем восстановить альфа из того, что потом:

convert rings.png -write MPR:orig +dither -remap colortable.png MPR:orig -compose copyalpha -composite result.png

, где MPR: - это «Регистр программ памяти» , то есть именованный кусок оперативной памяти.

enter image description here

...