Как использовать stdin с заголовком в ImageMagick

Мое понимание от чтения документации ImageMagick относительно текста заключается в том, что @- нотация считывает содержимое стандартного ввода.

Таким образом, это должен быть довольно простой способ рендеринга Hello World.

 printf "Hello\nWorld" | convert \ -size 1280x100 \ -background '#0000FF10' \ -density 90 \ -gravity Center \ -fill black \ -font Helvetica \ caption:@- \ test.png 

В OS X 10.11.5 через HomeBrew это работает, используя convert версию: ImageMagick 6.9.4-3 Q16 x86_64 2016-05-20.

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

Однако на Ubuntu 16.04 LTS идентичная команда не работает, используя convert Version: ImageMagick 6.8.9-9 Q16 x86_64 2016-06-01. Фактически, он делает оператора stdin буквально.

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

Единственная вещь, которую я смог найти, что удаленно выглядела, как эта проблема в Google, была в этой статье , датированной в октябре 2015 года, когда ImageMagick 6.9.2-5 Beta была исправлена, чтобы устранить аналогичную проблему.

ВОПРОС : Я не избегаю этого, действительно ли проблема в ImageMagick, или мой Linux Distro собирает историческую версию ImageMagick с ошибкой, и мне нужно строить из исходного кода ?

Много позже после многих экспериментов

РЕШАЕТ …? Встроенный ImageMagick 7.0.2 из источника в поле Ubuntu и вышеприведенная команда работали по желанию. Было ли лучшее решение?

Не нужно строить из источника. Просто замените @ – на «tee»:

 printf "Hello\nWorld" | convert \ -size 1280x100 \ -background '#0000FF10' \ -density 90 \ -gravity Center \ -fill black \ -font Helvetica \ caption:"`tee`" \ test.png 

`tee` выполнит первый и ‘process’ stdin перед завершением команды convert.

Я подозреваю, что это связано с различиями в файле policy.xml . Были недавние предупреждения об уязвимостях безопасности IM ( подробнее здесь ), и я предполагаю, что файл policy.xml на одном из ваших серверов был policy.xml а не другой. Поврежденная строка в этом файле:

  

Разъяснения, внесенные владельцем вопроса:

  • Месторасположение файла политики – /etc/ImageMagick-6/policy.xml
  • Состояние по умолчанию в дистрибутиве пакета UNcommented out.
  • Предлагаемая здесь рекомендация состоит в том, чтобы прокомментировать это.
  • Это решение не работало для владельца вопроса; ваш пробег может отличаться,

Дальнейшее разъяснение Марка:

Местоположение файла policy.xml не всегда /etc/ImageMagick-6 , оно различно в разных системах – например, на OS X оно находится под /usr/local/Cellar/imagemagick...

policy.xml способ найти файл policy.xml – запустить следующую команду и понять, что ImageMagick ожидает, что файл policy.xml будет в том же каталоге, что и delegates.xml и coder.xml :

  convert -debug configure logo: null: 2>&1 | grep -Ei "Searching|Loading"