Преобразование форматов изображений — распространенная задача при работе с графикой или фотографиями. Если Вам нужно конвертировать PNG-изображение в JPG или наоборот, в Linux существует утилита командной строки convert
, позволяющая это сделать.
В этой статье мы рассмотрим четыре различных способа использования convert
для преобразования фото PNG в JPG и наоборот.
Содержание:
- Что такое convert
- Изменение формата изображения с помощью ls и xargs
- Преобразование формата с помощью команды parallel
- Изменение формата изображения с помощью цикла for
- Преобразование формата картинки с использованием скрипта
- Выводы
Что такое convert
Утилита convert
— универсальный инструмент для работы с картинками и их преобразования в Linux. Она входит в состав пакета ImageMagick
и позволяет выполнять широкий спектр операций с фотографиями, включая:
- преобразование формата;
- изменение размера;
- обрезку;
- поворот.
Синтаксис команды convert
выглядит следующим образом:
Где:
[input-options]
,[output-options]
— необязательные параметры, которые изменяют поведение команды;[input-file]
— путь или название исходной картинки;[output-file]
— путь или название выходного изображения.
Эта утилита изначально не предустановлена в большинстве дистрибутивов Linux. Чтобы ее установить, введите следующую команду.
Для Debian / Ubuntu:
Для CentOS / RHEL:
Для Fedora 22+:
Изменение формата изображения с помощью ls и xargs
Во всех последующих примерах мы будем конвертировать фото cat.jpg
c расширения JPG на PNG и наоборот. Эта картинка выглядит следующим образом.
В первом способе мы рассмотрим использование утилит командной строки ls
и xargs
. Команда ls
выводит список файлов и подкаталогов в заданной директории. Утилита xargs
принимает входные данные из стандартного ввода (stdin
) и преобразует их в аргументы для другой команды.
Чтобы изменить формат фото с JPG на PNG с помощью этого способа, нужно написать следующую команду с использованием перенаправления ввода / вывода:
Читайте также: 12 практических примеров команды xargs для начинающих в Linux, xargs примеры.
Разберем подробнее каждую команду из введенной конструкции:
ls -1 cat.jpg
— выводит название файлаcat.jpg
на отдельную строку, используя опцию-1
.|
— конвейер, перенаправляющий вывод предыдущей команды в качестве входных данных для следующей.xargs -n 1
— считывает название файлаcat.jpg
и передает его в качестве аргумента последующей команде.bash -c
— запускает новый экземпляр оболочки bash и использует опцию-c
для выполнения указанной строки как одной команды.convert "$0" "${0%.jpg}.png"
— преобразовывает входной файл из формата JPG в PNG:$0
— аргумент, который представляет название исходной фотографии;${0%.jpg}.png
— аргумент, который определяет название выходной картинки, полученнe. путем замены расширения*.jpg
на*.png
.
Чтобы конвертировать PNG-изображение в JPG, просто поменяйте местами форматы фото в предыдущей команде, как показано ниже:
Вы также можете преобразовать сразу все картинки из каталога в другой формат. Для этого вместо названия конкретного фото напишите символ *
(звездочку):
Преобразование формата с помощью команды parallel
Утилита parallel
— инструмент, позволяющий запускать несколько команд или процессов параллельно за счет использования преимуществ нескольких ядер процессора. Инструмент считывает переданные ему команды, а затем одновременно выполняет каждую из них за счет распределения рабочей нагрузки по доступным ядрам процессора.
Синтаксис parallel
следующий:
Где:
command
— команда, которую Вы хотите запустить параллельно;[options]
— опции, командыparallel
;arguments
— аргументы, которые будут обработаны командойcommand
;:::
— разделитель, который используется для отделения команды от входных элементов.
Чтобы установить parallel
, введите в окне терминала команды.
Для Debian / Ubuntu:
Для RHEL / CentOS / Fedora:
Итак, преобразуем картинку cat.jpg
в фото с расширением *.png
:
Здесь:
- Символы
{}
— представляют каждый входной элемент. - Символы
{.}
— удаляют расширение исходного изображения. - Аргумент
.png
— устанавливает формат*.png
для выходной фотографии.
Для конвертирования PNG-изображения в JPG, просто поменяйте местами форматы фото в предыдущей команде, как показано ниже:
Лучше всего утилита parallel
подойдет для группового преобразования картинок из одного формата в другой. Чтобы конвертировать все фото формата JPG из директории в PNG, введите в окне терминала:
Вы также можете использовать parallel
вместе с командой ls
для конвертирования форматов картинок:
Читайте также: 9 полезных команд для получения информации о процессоре (CPU) в Linux.
Изменение формата изображения с помощью цикла for
Еще один способ изменить формат изображения — использовать циклы. В Linux для пользователей доступен цикл for
. Этот способ будет очень удобным, если Вы хотите изменить формат сразу у нескольких картинок. Чтобы преобразовать все фото формата JPG из директории на PNG или наоборот, используйте одну из следующих команд:
Однако, Вы можете конвертировать формат и одного фото, используя этот метод. Просто количество итераций цикла будет равняться одному. К примеру, изменение формата файла cat.jpg
с JPG на PNG будет выглядеть так:
Преобразование формата картинки с использованием скрипта
Чтобы автоматизировать процесс изменения форматов изображений, лучше всего написать сценарий оболочки. Благодаря скриптам, Вам не нужно будет писать одну и ту же большую команду каждый раз в окне терминала. Чтобы конвертировать фото cat.jpg
с JPG на PNG, создадим файл с расширением *.sh
и впишем в него следующий код:
Читайте также: Bash-it — управления вашими скриптами и псевдонимами.
Далее сохраним этот файл и добавим права на его исполнение. После чего запустим скрипт:
Выводы
Мы рассмотрели четыре различных метода использования команды convert
для преобразования изображений форматов PNG и JPG в Linux. Каждый из представленных способов обеспечивает быстрое конвертирование картинок.
Спасибо за время, уделенное прочтению статьи!
Если возникли вопросы — задавайте их в комментариях.
Подписывайтесь на обновления нашего блога и оставайтесь в курсе новостей мира инфокоммуникаций!
Чтобы знать больше и выделяться знаниями среди толпы IT-шников, записывайтесь на курсы Cisco, курсы по кибербезопасности, полный курс по кибербезопасности, курсы DevNet / DevOps (программируемые системы) от Академии Cisco, курсы Linux от Linux Professional Institute на платформе SEDICOMM University (Университет СЭДИКОММ).
Курсы Cisco, Linux, кибербезопасность, DevOps / DevNet, Python с трудоустройством!
- Поможем стать экспертом по сетевой инженерии, кибербезопасности, программируемым сетям и системам и получить международные сертификаты Cisco, Linux LPI, Python Institute.
- Предлагаем проверенную программу с лучшими учебниками от экспертов из Cisco Networking Academy, Linux Professional Institute и Python Institute, помощь сертифицированных инструкторов и личного куратора.
- Поможем с трудоустройством и стартом карьеры в сфере IT — 100% наших выпускников трудоустраиваются.
- Проведем вечерние онлайн-лекции на нашей платформе.
- Согласуем с вами удобное время для практик.
- Если хотите индивидуальный график — обсудим и реализуем.
- Личный куратор будет на связи, чтобы ответить на вопросы, проконсультировать и мотивировать придерживаться сроков сдачи экзаменов.
- Всем, кто боится потерять мотивацию и не закончить обучение, предложим общение с профессиональным коучем.
- отредактировать или создать с нуля резюме;
- подготовиться к техническим интервью;
- подготовиться к конкурсу на понравившуюся вакансию;
- устроиться на работу в Cisco по специальной программе. Наши студенты, которые уже работают там: жмите на #НашиВCisco Вконтакте, #НашиВCisco Facebook.