Я запускаю imagemagick (инструмент CLI), чтобы разделить изображение на 16 равных частей.

Я использую это так:

convert inputfile.jpg -crop 4x4@ +repage +adjoin -resize 256x256 output_4x4_%03d.jpg

Я хотел бы сохранить имя исходного файла, inputfile.jpg, и использовать его в качестве выходных данных вместо «output_4x4 ...» автоматически, т.е. без необходимости каждый раз менять его, поэтому я могу запускать его автоматически на связке файлов и сохраните их оригинальные имена.

Это возможно?

Благодарю.

1 ответ1

0

В ImageMagick 6 и 7 вам нужно сначала получить имя.

name=$(convert inputfile.jpg -format "%t" info:) 
convert inputfile.jpg -crop 4x4@ +repage +adjoin -resize 256x256 ${name}_4x4_%03d.jpg


Можно подумать, что вы можете использовать опцию -set filename как, например:

convert inputfile.jpg -set filename:fn "%t" -crop 4x4@ +repage +adjoin -resize 256x256 "%[filename:fn]_4x4_%03d.jpg"


Но это не решит% 03d. Это даст такие результаты, как

inputfile_4x4_%03d.0.jpg
inputfile_4x4_%03d.1.jpg
inputfile_4x4_%03d.2.jpg
inputfile_4x4_%03d.3.jpg


Если вы удалите _% 03d, вы просто получите

inputfile_4x4.jpg


По крайней мере, так происходит на моем Mac.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .