zaLinux.ru

Ошибки при использовании magick (convert) из пакета ImageMagick и их устранение


Утилиты magick (convert) из пакета ImageMagick используются для конвертации и модификации изображений. Команды magick (convert) имеют большое количество опций, хотя в своём базовом применении, например, для конвертации из одного формата в другой, можно обойтись вовсе без опций.

Несмотря на кажущуюся простоту использования утилит magick (convert) во время их применения я столкнулся с разнообразными ошибками, причиной которых был неинтуитивный синтаксис команд.

Подробности по установке ImageMagick, в том числе какие зависимости необходимо установить для поддержки максимального количества форматов, смотрите в статье: Руководство по ImageMagick: установка, использование и решение проблем

Как исправить «magick: команда не найдена»

Если вы столкнулись с ошибкой, что команда magick не найдена, то это означает, что:

  • не установлен пакет imagemagick
  • установлен пакет imagemagick шестой или более ранней версии

На момент написания актуальной версией ImageMagick является 7.*. Но в Debian и во всех производных дистрибутивах используется ImageMagick 6.*, в которой программа magick отсутствует. Поэтому если у вас возникла ошибка, что команда magick не найдена, используйте вместо неё команду convert.

magick: no images found for operation… (РЕШЕНО)

Следующая команда:

magick -motion-blur 10 IMAGE.jpg OUTPUT.jpg

вызовет ошибку:

magick: no images found for operation `-motion-blur' at CLI arg 1 @ error/operation.c/CLIOption/5414.

Суть ошибки в том, что для указанного оператора не найдены изображения. При этом как вы можете убедиться, в команде указано входное изображение для преобразования (IMAGE.jpg) и указано имя выходного изображения (test.jpg).

Чтобы понять причину ошибки, обратимся к синтаксису команды magick:

magick [ВХОДНЫЕ-ОПЦИИ] ВХОДНОЙ ФАЙЛ [ВЫХОДНЫЕ-ОПЦИИ] ВЫХОДНОЙ ФАЙЛ

То есть утилита magick различает «опции входного файла» и «опции выходного файла». Причём практически все опции являются ВЫХОДНЫМИ-ОПЦИЯМИ. Исключением, то есть ВХОДНЫМИ-ОПЦИЯМИ, являются -antialias, -caption, -density, -define, -encoding, -font, -pointsize, -size и -texture, а также опции из раздела «Разные параметры».

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

magick IMAGE.jpg -motion-blur 10 OUTPUT.jpg

magick: missing output filename `-identify' … (РЕШЕНО)

Следующая команда по задумке должна вывести подробную информацию о файле IMAGE.jpg:


magick IMAGE.jpg -identify -verbose

Но вместо этого она выводит ошибку:

magick: missing output filename `-identify' at CLI arg 3 @ error/magick-cli.c/ProcessCommandOptions/524.

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

magick IMAGE.jpg -identify -verbose ANY.jpg

magick: MissingArgument … (РЕШЕНО)

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

magick IMAGE.jpg -posterize OUTPUT.jpg

Текст ошибки:

magick: MissingArgument `-posterize' at CLI arg 2 @ fatal/magick-cli.c/ProcessCommandOptions/447.


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

magick IMAGE.jpg -posterize 2 OUTPUT.jpg

magick: unrecognized option `-channel-extract'… (РЕШЕНО)

В следующей команде опция помещена между именами файлов, у опции присутствует аргумент:

magick IMAGE.jpg -channel-extract 10 OUTPUT.jpg

Но, тем не менее, выполнение команды завершается ошибкой:

magick: unrecognized option `-channel-extract' at CLI arg 2 @ fatal/magick-cli.c/ProcessCommandOptions/428.

Суть ошибки в том, что опция не распознана. Если опция не распознана, то для начала проверьте правильность её написания. Если опция написана правильно, но при этом не распознана, значит эта опция устарела и была исключена. По моим наблюдениям, справка, выводимая командой

man magick

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

Официальная онлайн справка по опциям magick находится на следующей странице: https://imagemagick.org/script/magick.php

The option does not work, but no errors are shown

Consider the following command:

magick IMAGE.jpg -rotate 30 -background red test8.jpg

As planned, the image should be rotated by 30 degrees, and the empty corners that appear should be filled with red. As a result of executing the command, the image will indeed be rotated, but the corners will remain white.

To fix the error, you must specify the -background option first. The following command will work exactly as intended:


magick IMAGE.jpg -background red -rotate 30 test8.jpg

Рекомендуемые статьи:

Оставить комментарий

Ваш адрес email не будет опубликован.