Вопрос или проблема
У меня есть список JPG файлов, каждый из которых находится в разных папках на сервере только с командной строкой, которые мне нужно преобразовать в PNG.
Я знаю простую команду для конвертации их один за другим с помощью mogrify. Но у меня около 300 изображений с разными именами, разбросанных по всем разным папкам, вот так:
/home/user/dfp/app/roundtable/wp-content/uploads/2022/06/play.jpg
/home/user/dfp/app/roundtable/wp-content/uploads/2021/02/turn.jpg
/home/user/dfp/app/roundtable/wp-content/uploads/2020/01/up.jpg
/home/user/dfp/app/roundtable/wp-content/uploads/2022/09/down.jpg
/home/user/dfp/app/roundtable/wp-content/uploads/2021/01/left.jpg
и так далее
В каждом из каталогов есть тысячи других изображений, которые я не хочу изменять. Только конкретные файлы из моего списка.
Есть ли простой способ массовой конвертации списка изображений, который у меня есть? У меня действительно есть список изображений, как в приведенном выше примере, в .txt файле.
Вы можете использовать простой цикл командной оболочки для чтения и обработки имен файлов из файла списка. Например, в bash
оболочке:
while IFS= read -r file; do
# ваша команда mogrify для "$file"
done < path/to/listfile.txt
Вы можете запустить это либо в интерактивной командной строке bash, либо как скрипт с #!/bin/bash
в начале.
Вы можете сделать это без использования оболочки или цикла и без необходимости запускать целый новый процесс для каждого файла.
Просто используйте следующий синтаксис, чтобы конвертировать все файлы, перечисленные в YOURLISTFILE.txt
, в формат PNG:
magick mogrify -format png @YOURLISTFILE.txt
Если вы этого еще не заметили, @
делает всю работу за вас.
Обратите внимание, что вы также можете предоставить список файлов через stdin
, используя, например, find
, если у вас нет фактического файла, содержащего список имен файлов. Это будет выглядеть так:
find . -name "*important.jpg" -print | magick mogrify -format png @-
Ответ или решение
Для быстрого и эффективного преобразования группы изображений в формате JPG в формат PNG, которые расположены в различных каталогах на вашем сервере, вы можете воспользоваться инструментом ImageMagick и его возможностями для обработки файлов с использованием списка. Ваша задача состоит в том, чтобы обработать только определённые файлы, упомянутые в вашем списке, избегая модификации остальных изображений.
Вот как осуществить данную операцию.
Шаг 1: Создайте файл списка
Сначала убедитесь, что у вас есть текстовый файл, содержащий полный путь к изображениям, которые вы хотите преобразовать. Пример вашего файла может выглядеть так:
/home/user/dfp/app/roundtable/wp-content/uploads/2022/06/play.jpg
/home/user/dfp/app/roundtable/wp-content/uploads/2021/02/turn.jpg
/home/user/dfp/app/roundtable/wp-content/uploads/2020/01/up.jpg
/home/user/dfp/app/roundtable/wp-content/uploads/2022/09/down.jpg
/home/user/dfp/app/roundtable/wp-content/uploads/2021/01/left.jpg
Сохраните данный файл как image_list.txt
.
Шаг 2: Используйте команду mogrify
После создания списка вы сможете выполнить команду преобразования, используя следующую команду в терминале:
magick mogrify -format png @image_list.txt
В этой команде важно обратить внимание на символ @
, который указывает, что следует использовать список файлов, содержащихся в image_list.txt
. Это позволяет избежать необходимости циклического обхода каждого файла и создавать лишние процессы, тем самым повышая общую производительность.
Шаг 3: Убедитесь в результатах
После выполнения команды все указанные вами JPG-изображения будут преобразованы в PNG и сохранены в тех же каталогах, что и оригиналы. Проверьте каждую папку, чтобы убедиться, что файлы были успешно преобразованы.
Обработка ошибок и рекомендации
-
Резервное копирование: Рекомендуется сделать резервную копию оригинальных файлов перед преобразованием на случай, если что-то пойдет не так.
-
Проверка наличия ImageMagick: Убедитесь, что на вашем сервере установлен ImageMagick. Вы можете проверить установку, выполнив команду
convert -version
в терминале. -
Рабочая среда: Если у вас много изображений или вы планируете частые преобразования, рассмотрите возможность автоматизации данного процесса с помощью скриптов.
Заключение
Эта простая команда обеспечит вам массовую конвертацию изображений, минимизируя время и усилия. Используя данную методику, вы сможете эффективно управлять преобразованием изображений на своем сервере без лишних хлопот и затрат ресурсов. При наличии вопросов или возникновения проблем с выполнением команды, не стесняйтесь обращаться за поддержкой.