Конвертер imagemagick неожиданно меняет цвет фона

я пытаюсь добиться простой графики с веб-сервера и использовать imagemagick, чтобы изменить несколько цветов, чтобы затем я мог использовать этот образ.

Это часть изображения:

convert traffic.png -transparent "rgb(240,240,240)" traffic2.png convert traffic2.png -fill "rgb(200,200,200)" -opaque black traffic2.png convert traffic2.png -fill "rgb(200,200,200)" -opaque "rgb(0,200,0)" traffic2.png convert traffic2.png -fill "rgb(200,200,200)" -opaque "rgb(0,130,0)" traffic2.png convert traffic2.png -fill "rgb(200,200,200)" -opaque "rgb(150,150,255)" traffic2.png # convert traffic2.png -fill "rgb(200,200,200)" -opaque "rgb(0,0,255)" traffic2.png 

Проблема, с которой я столкнулась, – это строка, которая в настоящее время закомментирована. То, что должно было бы сделать, по моему мнению, изменить все вхождения этого синего на тот же серый, что и указано, но это также делает, но как только эта строка будет выполнена, ранее прозрачный фон превращается в сплошной цвет. Видя, как синтаксис одинаковый, я действительно не знаю, почему это происходит. Он отлично работает, когда я пытаюсь выполнить эти команды на своей локальной машине (OS X), но под Debian на моем малине Pi что-то похоже мешает.

  • Создание нескольких png с ImageMagick вызывает медленный рабочий стол
  • mkfifo, файловые дескрипторы и ImageMagick (конвертировать)
  • Imagemagick имеет проблемы с экранированием переменных оболочки
  • ImageMagick: PNG to GIF: сделать любой не полностью прозрачный пиксельный массив
  • малина pi продолжает убивать imagemagicks конвертировать
  • конвертировать PDF в png с изменением размера и добавлением черной границы
  • Необычно большой значок, созданный ImageMagick
  • Поверните изображение, если ширина больше значения (то есть в пикселях)
  • One Solution collect form web for “Конвертер imagemagick неожиданно меняет цвет фона”

    Я думаю, что ваша проблема, как мы обсуждали в комментариях по вашему вопросу, в частности, изменение, которое было сделано между IM 6.6.X и 6.7+. Ваши команды работали для меня на Fedora 14 и CentOS 5 и 6, но не на Ubuntu 12.10.

    • F14 (6.6.4-1 2011-11-03 Q16) – работал
    • CentOS 6 (6.5.4-7 2012-05-07 Q16) – работал
    • Ubuntu 12.10 (6.7.7-10 2012-08-17 Q16) не работал

    Я нашел этот бит в документации IM, озаглавленный: Примеры ImageMagick v6 – Основы цвета и каналы . Этот бросок – это то, что привлекло мое внимание в разделе: «Замена цветов в изображениях»:

    Однако с IM v6.2.7 этот оператор ограничен настройкой «-канала». Таким образом, чтобы преобразовать цвет (например, синий) в прозрачность, вам нужно указать «канал», чтобы включить альфа-канал, чтобы сделать прозрачные цвета. Вам также необходимо убедиться, что изображение имеет «матовый» или альфа-канал, чтобы сохранить информацию о прозрачности.

    С помощью этой новой информации я преобразовал вашу 6-ю команду в это:

     $ convert traffic2.png -transparent "rgb(0,0,255)" traffic2.png 

    И, похоже, он сработал. ОП подтвердил, что это решило его проблему!

    старая команда

    ss of bad traffic2.png

    новая команда

    ss of good traffic2.png

    Linux и Unix - лучшая ОС в мире.