ImageMagick — преобразуйте белые цвета изображения в другие, сохраняя прозрачность и исключая черный

#imagemagick

Вопрос:

У меня есть большой набор изображений. По умолчанию используется белый цвет, который следует изменить на определенный шестнадцатеричный код, оставив в покое любой черный цвет, присутствующий на изображении (поскольку он обозначает символ). Белый цвет обычно частично прозрачен, и его следует сохранить, если это так. Любые полностью прозрачные области должны быть прозрачными.

Я выполняю пакетную обработку с помощью Powershell- $ColorHex относится к шестнадцатеричному значению в массиве. Сгенерированный файл должен соответствовать полученному цвету.

Пример Исходного Изображения

Зеленый (#009900) — раскрасить 70%

magick ".FFFFFF.png" -fuzz 5% -fill "#$ColorHex" -opaque "#FFFFFF" -colorize 70% "$ColorHex.png"

Зеленый (#009900) — пух 75% -непрозрачный

magick convert ".FFFFFF.png" -fuzz 75% -fill "#$ColorHex" -opaque "#FFFFFF" "$ColorHex.png"

Как правило, это то, что я хочу, но не сохраняет частичную прозрачность белого при преобразовании в зеленый И неровен по черным краям (предпочел бы, чтобы он был сглажен).

У меня есть тонна изображений, которые я хочу обработать таким образом, и я очень признателен за любую помощь.

Комментарии:

1. Если вы хотите изменить только чистый (непрозрачный) белый цвет, не включайте-fuzz. Если вы хотите изменить частично прозрачный белый цвет, то каково ваше значение ColorHex? Вы включили прозрачность? Для Imagemagick 7 используйте магию, а не преобразование магии.

Ответ №1:

Возможно, это то, что вам нужно в Imagemagick 7. Здесь я делаю копию изображения в памяти. Затем я выключаю alpha и обрабатываю все чисто белым. Затем я извлекаю альфа-канал из копии в памяти и помещаю его обратно на полученное зеленое изображение.

Ввод:

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

Синтаксис Unix:

 magick nCijg.png  write mpr:img 
-alpha off -fill "#009900" -opaque "#FFFFFF" 
( mpr:img -alpha extract ) 
-alpha off -compose copy_opacity -composite 
result.png
 

Синтаксис Windows:

 magick nCijg.png  write mpr:img ^
-alpha off -fill "#009900" -opaque "#FFFFFF" ^
( mpr:img -alpha extract ) ^
-alpha off -compose copy_opacity -composite ^
result.png
 

Результат:

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

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

Комментарии:

1. Именно то, что мне было нужно. Я увеличил размытость и для значков без границ смог раскрасить их (используя -раскрасить 100%). Огромное спасибо.