В Linux команда convert
библиотеки ImageMagick используется для пакетной обработки изображений, выполняя изменение формата, размера и многое другое.
Содержание
Синтаксис
$ 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. Был приведён пример пакетной обработки изображений.
Возможности утилиты огромны. Она позволяет: преобразовывать изображение в чёрно-белое; постеризовать; инвертировать; изменять разрядность и контраст; нормализовать; кадрировать и выполнять многие иные операции.