ImageMagick: преобразовать, чтобы сохранить то же имя для преобразованного изображения

Я конвертирую файлы .psd в .png внутри папки с одним. Как сохранить одинаковое имя каждого файла в папке с другим расширением?

Например, я вхожу в папку с изображениями, а затем с терминала выполняю

$ convert *.psd *.png

но он дает имена .png просто числам, не совпадающим с соответствующим изображением .psd.


person PaolaJ.    schedule 05.01.2015    source источник
comment
Вы должны принять ответ @emcconville вместо моего, потому что он не зависит от платформы.   -  person Kurt Pfeifle    schedule 05.01.2015
comment
Я не могу разобрать твой английский...   -  person Yan King Yin    schedule 08.10.2020


Ответы (4)


Используйте параметры -set и форматирования.

convert *.psd -set filename:base "%[basename]" "%[filename:base].png"

См. разделы "процент экранирования полных атрибутов" и "Процент экранирования имен файлов" docs.

Обновить

Также можно использовать утилиту mogrify, поставляемую с imagemagick.

mogrify -format png *.psd

Примечание. Будьте осторожны с mogrify, поскольку в документах указано...

Этот инструмент аналогичен конвертации, за исключением того, что исходный файл изображения перезаписывается (если вы не измените суффикс файла с помощью параметра -format) при любых изменениях, которые вы запрашиваете.

person emcconville    schedule 05.01.2015
comment
Просто обновление: base теперь называется basename. С этой заменой работает как положено! - person Jomel Imperio; 13.04.2018

Если вы работаете в Linux, Unix или Mac OSX, вы можете использовать в окне терминала с оболочкой Bash:

for i in *.psd; do
     convert $i ${i/.psd/.png}
done

Я намеренно больше не рекламирую mogrify. Это слишком опасно для каждого пользователя, который еще не знает об этом и заходит на этот сайт, чтобы попросить о помощи. mogrify в некоторых случаях перезаписывает исходные файлы (конечно, не при преобразовании PSD->PNG)

person Kurt Pfeifle    schedule 05.01.2015

Или еще проще:

mogrify -format png *.psd
person Mark Setchell    schedule 05.01.2015
comment
Правильно, mogrify с -format сделает то же самое. - person emcconville; 05.01.2015
comment
Обратите внимание, что в версии 7 ImageMagick это становится magick mogrify -format png *.psd - person Mark Setchell; 05.09.2020
comment
@MarkSetchell спасибо, это работает. Есть ли способ поместить вывод в подпапку? Не могу понять. - person Eskel; 17.06.2021
comment
@ Эскель Да. mkdir OUTPUT; magick mogrify -path OUTPUT -format png *.psd - person Mark Setchell; 17.06.2021

Мне нравится лучший ответ,

при этом в более поздних версиях ImageMagick команда

convert *.psd -set filename:basename "%[basename]" "%[filename:basename].png"

как также упоминали @jan-glx и @jomel imperio

person Cameron    schedule 28.12.2018