Пакетное преобразование нескольких конкретных изображений, распределённых по десяткам папок.

Вопрос или проблема

У меня есть список 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 и сохранены в тех же каталогах, что и оригиналы. Проверьте каждую папку, чтобы убедиться, что файлы были успешно преобразованы.

Обработка ошибок и рекомендации

  1. Резервное копирование: Рекомендуется сделать резервную копию оригинальных файлов перед преобразованием на случай, если что-то пойдет не так.

  2. Проверка наличия ImageMagick: Убедитесь, что на вашем сервере установлен ImageMagick. Вы можете проверить установку, выполнив команду convert -version в терминале.

  3. Рабочая среда: Если у вас много изображений или вы планируете частые преобразования, рассмотрите возможность автоматизации данного процесса с помощью скриптов.

Заключение

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

Оцените материал
Добавить комментарий

Капча загружается...