Команда Linux convert

Опубликовано admin - чт, 06/08/2023 - 15:40

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

Примеры использования команды convert в Linux

Содержание

Синтаксис

$ convert [параметры_ввода] файл_ввода [параметры_вывода] файл_вывода

Опции

Количество параметров настолько велико, что представлять их все в одной статье нереально. Использование опций будет показано в примерах.

Для вывода всех параметров достаточно запустить следующую команду:

oleg@mobile:~:$ convert --help

По умолчанию формат изображения (файла) определяется его магическим номером. Определённый формат изображения указывается перед именем файла и их разделяет двоеточие (например, ps:image). Можно также указать тип изображения в качестве суффикса имени файла (например, image.ps). Для стандартного ввода или вывода файл указывается как -.

Использование команды convert в Linux

Преобразование формата изображения

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

oleg@mobile:~/ImageMagick:$ convert tux.jpg tux.png
oleg@mobile:~/ImageMagick:$

Исзодное изображение, преобразуемое в другой формат

Исходное изображение

Результат преобразования формата изображения

Результат преобразования

Изображение tux.png выглядит так же, как исходный файл tux.jpg, но при этом изменился не только формат, но и размер.

oleg@mobile:~/ImageMagick:$ ls -l
итого 56
-rw-r--r-- 1 oleg users 10956 июн  8 13:46 tux.jpg
-rw-r--r-- 1 oleg users 41649 июн  8 13:47 tux.png
oleg@mobile:~/ImageMagick:$

Преобразование формата больших групп файлов

Команду convert можно с успехом использовать для пакетного преобразования формата, например, сотен файлов .jpg из сотен файлов .png (или наоборот). В зависимости от количества файлов выполнение задачи займёт от нескольких секунд до нескольких минут.

Рекомендую для выполнения задачи следующий скрипт:

#!/bin/bash

for file in `ls *.png`
do
    newfile=`echo $file | sed 's/png/jpg/'`
    convert $file $newfile
done

Для преобразования формата .jpg в формат .png используется, конечно, sed 's/jpg/png/'.

Указанные форматы приведены лишь для примера, так как утилита convert работает с изображениями множества форматов.

Вращение и переворот

Для поворота файла необходимо сообщить утилите нужный угол поворота в градусах. Поворачиваем изображение на 45° по часовой стрелке, используя опцию -rotate:

oleg@mobile:~/ImageMagick:$  convert tux.jpg -rotate 45 tux45.png
oleg@mobile:~/ImageMagick:$

Поворот изображения

Результат поворота изображения

Переворачиваем изображения, используя опцию -flip:

oleg@mobile:~/ImageMagick:$ convert tux.jpg -flip tux_flip.jpg
oleg@mobile:~/ImageMagick:$

Переворот изображения

Результат переворота изображения

Обратите внимание, что в первой команде мы выполняем поворот и преобразование в файл .png с помощью одной команды.

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

Аннотирование

Добавление аннотации к изображению немного «геморройно», так как необходимо выбрать шрифт, размер, цвет и положение текста.

oleg@mobile:~/ImageMagick:$ convert tux.jpg -font courier -fill black -pointsize 24 -annotate +17+243 'Крутой пингвин' tux_annot.jpg
oleg@mobile:~/ImageMagick:$

Аннотированное изображение

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

Объединение

Создаём из двух изображений одно:

oleg@mobile:~/ImageMagick:$ convert tux.jpg tux_flip.jpg -append tux_append.jpg
oleg@mobile:~/ImageMagick:$

Объединение изображений

В полученном файле находятся исходное и перевёрнутое изображения.

Масштабирование

Изменение размеров изображения выполняется очень просто:

oleg@mobile:~/ImageMagick:$ convert -geometry 120x160 tux.jpg tux_out.jpg
oleg@mobile:~/ImageMagick:$

Масштабированное изображение

Масштабированное изображение

Изображение tux.jpg масштабировано до ширины - 120 и высоты - 160 пикселей, а полученное изображение записано в файл tux_out.jpg.

Операции с цветом

При операциях с цветом изменяются цветовые пространства: RGB/CMYK, grayscale и BW. Здесь используется опция -colorspase. Параметр -colorspace позволяет переводить изображения между разными цветовыми пространствами: GRAY, OHTA, RGB, Transparent, XYZ, YCbCr, YIQ, YPbPr, YUV или CMYK.

Переводим изображение в оттенки серого:

oleg@mobile:~/ImageMagick:$ convert -colorspace GRAY tux.jpg tux_gray.jpg
oleg@mobile:~/ImageMagick:$

Изображение, переведённое в оттенки серого

Изображение в оттенках серого

Заключение

В статье были приведены лишь базовые примеры преобразования изображений в Linux командой convert, входящей в библиотеку ImageMagick. Был приведён пример пакетной обработки изображений.

Возможности утилиты огромны. Она позволяет: преобразовывать изображение в чёрно-белое; постеризовать; инвертировать; изменять разрядность и контраст; нормализовать; кадрировать и выполнять многие иные операции.

Поделиться с друзьями