Уменьшить цвета изображения на основе таблицы colorlookup, исключая прозрачный

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

Олимпийский-logo.png
Олимпийский-logo.png

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

введите описание изображения здесь

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

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

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

введите описание изображения здесь

Ожидаемый результат:
олимпийское-логотип-expected.png
введите описание изображения здесь

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

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

1

Решение

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

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

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

введите описание изображения здесь

2

Другие решения

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

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

введите описание изображения здесь

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

2

По вопросам рекламы [email protected]