Поиск по сайту:

4 способа пакетного преобразования PNG в JPG и наоборот


В вычислительной технике Пакетная обработка представляет собой неинтерактивное выполнение ряда задач в программе. В этом руководстве вам будут предложены 4 простых способа пакетного преобразования нескольких изображений .PNG в .JPG и наоборот с помощью инструментов командной строки Linux.

Во всех примерах мы будем использовать инструмент командной строки convert, однако для этого вы также можете использовать mogrify.

Синтаксис использования convert:

convert input-option input-file output-option output-file

А для mogrify это:

mogrify options input-file

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

Ниже приведены различные способы пакетного преобразования всех изображений .PNG в формат .JPG, если вы хотите преобразовать .JPG в . .PNG, вы можете изменить команды в соответствии с вашими потребностями.

1. Конвертируйте PNG в JPG с помощью команд «ls» и «xargs».

Команда ls позволяет вам вывести список всех ваших изображений png, а xargs позволяет создать и выполнить команду convert из стандартного ввода для преобразования всех Изображения .png в .jpg.

----------- Convert PNG to JPG ----------- 
ls -1 *.png | xargs -n 1 bash -c 'convert "$0" "${0%.png}.jpg"'

----------- Convert JPG to PNG ----------- 
ls -1 *.jpg | xargs -n 1 bash -c 'convert "$0" "${0%.jpg}.png"'

Объяснение опций, используемых в приведенной выше команде.

  1. -1 — флаг указывает ls перечислять по одному изображению в строке.
  2. -n — указывает максимальное количество аргументов, равное 1 для данного случая.
  3. -c – указывает bash выполнить данную команду.
  4. $ {0%.png}.jpg – задает имя нового конвертируемого изображения, знак % помогает удалить старое расширение файла.

Я использовал команду ls -ltr, чтобы просмотреть все файлы по дате и времени изменения.

Аналогичным образом вы можете использовать приведенную выше команду для преобразования всех ваших изображений .jpg в .png, изменив приведенную выше команду.

2. Конвертируйте PNG в JPG с помощью команды GNU «Parallel».

GNU Parallel позволяет пользователю параллельно создавать и выполнять команды оболочки из стандартного ввода. Убедитесь, что в вашей системе установлен GNU Parallel, в противном случае установите его, используя соответствующие команды ниже:

sudo apt-get install parallel     [On Debian/Ubuntu systems]
sudo yum install parallel         [On RHEL/CentOS and Fedora]

После установки утилиты Parallel вы можете запустить следующую команду, чтобы преобразовать все изображения .png в формат .jpg из стандартного ввода.

----------- Convert PNG to JPG ----------- 
parallel convert '{}' '{.}.jpg' ::: *.png

----------- Convert JPG to PNG -----------
parallel convert '{}' '{.}.png' ::: *.jpg

Где,

  1. {} – строка ввода, которая представляет собой строку замены, заменяемую полной строкой, считанной из источника ввода.
  2. {.} – строка ввода без расширения.
  3. ::: – указывает источник входных данных, то есть командную строку для приведенного выше примера, где *png или *jpg является аргументом.

Альтернативно вы также можете использовать команды ls и parallel вместе для пакетного преобразования всех изображений, как показано:

----------- Convert PNG to JPG ----------- 
ls -1 *.png | parallel convert '{}' '{.}.jpg'

----------- Convert JPG to PNG -----------
ls -1 *.jpg | parallel convert '{}' '{.}.png'

3. Конвертируйте PNG в JPG с помощью команды цикла for.

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

----------- Convert PNG to JPG ----------- 
bash -c 'for image in *.png; do convert "$image" "${image%.png}.jpg"; echo “image $image converted to ${image%.png}.jpg ”; done'

----------- Convert JPG to PNG -----------
bash -c 'for image in *.jpg; do convert "$image" "${image%.jpg}.png"; echo “image $image converted to ${image%.jpg}.png ”; done'

Описание каждой опции, используемой в приведенной выше команде:

  1. -c позволяет выполнять оператор цикла for в одинарных кавычках.
  2. Переменная image является счетчиком количества изображений в каталоге.
  3. Для каждой операции преобразования команда echo сообщает пользователю, что изображение png было преобразовано в формат jpg и наоборот в строке $image, преобразованной в & #36 {image%.png}.jpg ».
  4. “$ {image%.png}.jpg” создает имя преобразованного изображения, где % удаляет расширение старого формата изображения.

4. Конвертируйте PNG в JPG с помощью сценария оболочки

Если вы не хотите портить командную строку, как в предыдущем примере, напишите небольшой скрипт, например:

Примечание. Поменяйте местами расширения .png и .jpg, как показано в примере ниже, для преобразования из одного формата. другому.

#!/bin/bash
#convert
for image in *.png; do
        convert  "$image"  "${image%.png}.jpg"
        echo “image $image converted to ${image%.png}.jpg ”
done
exit 0 

Сохраните его как convert.sh, сделайте скрипт исполняемым, а затем запустите его из каталога, в котором находятся ваши изображения.

chmod +x convert.sh
./convert.sh

Итак, мы рассмотрели некоторые важные способы пакетного преобразования изображений .png в формат .jpg и наоборот. Если вы хотите оптимизировать изображения, вы можете просмотреть наше руководство, в котором показано, как сжимать изображения PNG и JPG в Linux.

Вы также можете поделиться с нами любыми другими методами, включая инструменты командной строки Linux для преобразования изображений из одного формата в другой на терминале, или задать вопрос в разделе комментариев ниже.