2016-09-07 6 views
1

Я использую Ubuntu 14.0.4. Мы можем использовать эту команду, чтобы пометить каждое изображение на его имя:команда монтажа ImageMagick не читается из файла

montage -label '%t' -size 512x512 "./img/*.*[120x90]" -geometry +5+5 photo.png 

Я хочу, чтобы маркировать изображения, список строк, который записывается в виде текстового файла. Docs say:

-label name

Use this option to assign a specific label to the image ... If the first character of string is @, the image label is read from a file titled by the remaining characters in the string. Labels in a file are literal, no embedded formatting characters are recognized.

Но я не мог использовать файл, чтобы обеспечить этикетку. Я использую команду:

montage -label @un.txt -size 512x512 "./img/*.*[120x90]" -geometry +5+5 photo.png 

Выше un.txt это имя текстового файла, в ./img/ пути. Это результат выборки:

enter image description here

В результате, все изображения, помеченные строкой @un.txt вместо содержания un.txt. Кроме того, я получаю эту ошибку в terminal:

montage.im6: improper image header `./img/un.txt' @ error/txt.c/ReadTXTImage/429

Если я двигатьсяun.txt к текущему (.) каталогу и снова запустить над командой, я буду получать это изображение (нет метки) и ниже ошибок:

enter image description here

montage.im6: not authorized `@un.txt' @ error/property.c/InterpretImageProperties/2959.

Примечание:

  1. Все изображения jpg
  2. Версия ImageMagick является ImageMagick 6.7.7-10
+0

Что такое 'un.txt'? Кроме того, вы знаете, что каждое изображение будет иметь одну и ту же метку, используя этот метод, верно? – grochmal

+0

@grochmal Содержимое представляет собой простую строку: 'test'. – hasanghaforian

+0

Не могли бы вы дать свою версию, если imagemagic (например, 'convert -version')? (существует справедливая вероятность того, что ответ Марка ниже). Кроме того, вы намерены иметь разные метки для четырех изображений? (Я вижу проблему с использованием @labelfile для этого.) – grochmal

ответ

1

Обновлено Ответ

Может быть, у вас есть неправильный синтаксис для label:

convert -size 100x100 xc:red label:@label.txt -append result.png 

enter image description here

где label.txt содержит fred.

Оригинал ответа

Это, вероятно, связано с уязвимостью, обнаруженной в ImageMagick, см here.

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

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

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

+0

Эта уязвимость относится к изображениям на основе XML (SVG) и URL-адресу. Я могу прочитать файл @label в своем IM 6.9.5-8 (который после исправления), даже если я удалю свой файл policy.xml и добавлю URL-адрес в метку. (Я могу делать что-то неправильно, поэтому, возьмите его с солью) – grochmal

+1

Я удаляю '' строка из '/ etc/ImageMagick/policy.xml'. Теперь монтаж читается из файла, но он не маркирует каждое изображение по строке текстового файла. Он накладывает все изображения на все содержимое текстового файла. Я задал эту проблему как новый вопрос (http://stackoverflow.com/q/39378947/1043882), пожалуйста, просмотрите его. – hasanghaforian

Смежные вопросы