Как использовать имя входного файла в ImageMagick? - PullRequest
1 голос
/ 03 апреля 2020

Согласно документации ImageMagick, я ожидал бы, что:

convert fountain-pen1.jpg fountain-pen2.jpg handwriting.jpg  -resize 400x400\>  -set filename:f '%t_smol.%e' '%[filename:f]'

приведет к fountain-pen1_smol.jpg fountain-pen2_smol.jpg handwriting_smol.jpg.

Вместо этого он создает только fountain-pen1_smol.jpg.

Что я здесь не так делаю?

Я также пытался использовать только *.jpg, что приводит к тому же выводу.

convert -version 
Version: ImageMagick 6.9.7-4 Q16 arm 20170114 http://www.imagemagick.org
Copyright: © 1999-2017 ImageMagick Studio LLC
License: http://www.imagemagick.org/script/license.php
Features: Cipher DPC Modules OpenMP 
Delegates (built-in): bzlib djvu fftw fontconfig freetype jbig jng jp2 jpeg lcms lqr ltdl lzma openexr pangocairo png tiff wmf x xml zlib

Ответы [ 2 ]

1 голос
/ 03 апреля 2020

Ммм ... иногда вам нужно дать подсказку ImageMagick для создания большего количества выходных файлов, чем он ожидает, используя + adjoin :

convert fountain-pen1.jpg fountain-pen2.jpg handwriting.jpg  -resize 400x400\>  -set filename:f '%t_smol.%e' +adjoin '%[filename:f]'

Он догадывается, если вы введите %02d или что-то подобное в имени файла, но не знаете, что для вашего варианта использования.

1 голос
/ 03 апреля 2020

С ImageMagick вам обычно нужно установить эту переменную «filename:» сразу после чтения изображений. Попробуйте это ...

convert img1.jpg img2.jpg img3.jpg \
   -set filename:f "%[t]_smol.%[e]" -resize 400x400\> "%[filename:f]"

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

Я успешно использовал эту команду с IM 6.8.9 в bash. Он работает с версиями 6.9 и 7.0 в Windows, изменяя обратную косую черту в продолжения строки «\» на «^», удаляя обратную косую черту sh и помещая изменение размера «400x400>» в двойные кавычки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...