- FFmpeg | Пакетная обработка. Конвертирование всех файлов в папке
- Команда Linux convert
- Синтаксис
- Опции
- Использование команды convert в Linux
- Преобразование формата изображения
- Преобразование формата больших групп файлов
- Вращение и переворот
- Аннотирование
- Объединение
- Масштабирование
- Операции с цветом
- Заключение
- convert в Linux
- Пример
- Скрипты
- compizomania
FFmpeg | Пакетная обработка. Конвертирование всех файлов в папке
%%i — это переменная, куда на каждой итерации будет попадать путь к webm-файлу. Вместо i можно использовать любую другую букву латинского алфавита.
В скобках после do идут команды. В данном случае, просто выводим в консоль значение переменной %%i .
Уже можно запускать скрипт:
Скрипт выводит имена webm-видео и сами команды. Чтобы убрать вывод команд, добавляем в начало @echo off
Для того, чтобы заменить в имени файла webm на mp4, необходимо получить имя файла без расширения. Вот примеры:
%%i — имя файла и расширение: video1.webm
%%~ni — имя файла без расширения: video1
%%~xi — только расширение: webm
Возьмём имя файла без расширения и добавим в конец .mp4
%%~ni.mp4 — имя файла и расширение mp4: video1.mp4
Теперь попробуем таким образом выстроить команду для ffmpeg:
Всё правильно подставилось и команда уже выглядит рабочей. Однако, последний файл содержит пробелы, которые служат разделением команд. Чтобы ffmpeg понял, что Моё прекрасное видео.webm и Моё прекрасное видео.mp4 это целое имя входного и выходного файлов, нужно взять эти параметры в двойные кавычки:
Запускаем, и видим, что ffmpeg успешно конвертирует все webm файлы в текущей папке.
Если нужно положить результирующие файлы в отдельную папку, можно добавить
mkdir out — создаёт новую папку при старте скрипта
И добавить out/ в результирующий путь:
Конвертирование всех файлов в папке (Linux) Создаём текстовый файл convert.sh , это будет наш первый скрипт.
Чтобы выбрать все webm файлы используется цикл for:
file — это переменная, куда на каждой итерации будет попадать путь к webm-файлу.
Между do и done идут команды. В данном случае, просто выводим в консоль значение переменной file . Знак $ используется для обращения к переменной.
Запускаем
Для того, чтобы заменить в имени файла webm на mp4, необходимо получить имя файла без расширения. Вот примеры:
$file / $ — получение значения переменной file, то есть имя и расширение: video1.webm
$ — имя файла без расширения webm: video1
Возьмём имя файла без расширения и добавим в конец .mp4
$.mp4 — имя файла и расширение mp4: video1.mp4
Теперь попробуем таким образом выстроить команду для ffmpeg:
Всё правильно подставилось и команда уже выглядит рабочей. Однако, последний файл содержит пробелы, которые служат разделением команд. Чтобы ffmpeg понял, что Моё прекрасное видео.webm и Моё прекрасное видео.mp4 это целое имя входного и выходного файлов, нужно взять эти параметры в двойные кавычки.
Остаётся только убрать echo:
Запускаем, и видим, что ffmpeg успешно конвертирует все webm файлы в текущей папке.
Если нужно положить результирующие файлы в отдельную папку, можно добавить
mkdir out — создаёт новую папку при старте скрипта
И добавить out/ в результирующий путь:
Команда Linux convert
В Linux команда convert библиотеки ImageMagick используется для пакетной обработки изображений, выполняя изменение формата, размера и многое другое.
Синтаксис
$ convert [параметры_ввода] файл_ввода [параметры_вывода] файл_вывода
Опции
Количество параметров настолько велико, что представлять их все в одной статье нереально. Использование опций будет показано в примерах.
Для вывода всех параметров достаточно запустить следующую команду:
По умолчанию формат изображения (файла) определяется его магическим номером. Определённый формат изображения указывается перед именем файла и их разделяет двоеточие (например, 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. Был приведён пример пакетной обработки изображений.
Возможности утилиты огромны. Она позволяет: преобразовывать изображение в чёрно-белое; постеризовать; инвертировать; изменять разрядность и контраст; нормализовать; кадрировать и выполнять многие иные операции.
convert в Linux
Command ‘convert’ not found, but can be installed with: sudo apt install graphicsmagick-imagemagick-compat # version 1.4+really1.3.38-1, or sudo apt install imagemagick-6.q16 # version 8:6.9.11.60+dfsg-1.3build2 sudo apt install imagemagick-6.q16hdri # version 8:6.9.11.60+dfsg-1.3build2
Нужно установить imagemagick
sudo apt -y install imagemagick
Пример
Сконвертируем изображение с граффити из города Торремолинос
Уменьшим ширину до 800 пикселей
convert graffiti.jpg -resize 800 graffiti800.jpg
Уменьшим ширину до 500 пикселей
convert graffiti.jpg -resize 500 graffiti500.jpg
Скрипты
Скрипт, который сжимает все изображения jpg и png до заданной ширины
#!/bin/bash WIDTH = 1600 for file in ./*; do EXT = » $ » FULLNAME = » $ » if [[ $EXT = «jpg» ]] || [[ $EXT = «png» ]] ; then convert $FULLNAME -resize $WIDTH $FULLNAME fi done
#!/bin/bash WIDTH = 1000 resize_image() file = $1 EXT = » $ » FULLNAME = » $ » echo $FULLNAME if [[ $EXT = «jpg» ]] || [[ $EXT = «png» ]] ; then convert $FULLNAME -resize $WIDTH $FULLNAME fi > for file in ./*; do resize_image $file done
compizomania
Мы очень часто в повседневной жизни сталкиваемся с словом — Конвертировать. Конвертировать — преобразовывать из одного формата в другой. Это касается когда мы конвертируем/преобразовываем деньги из одной валюты в другую, например, евро в доллар или любую другую денежную единицу, конвертация в производстве, когда определённый вид продукции преобразовывается в иной, например, в металлургии получить металл путём обработки исходного продукта (руды) в конвертере (металлургическая печь) и т.п.
В данной статье пойдёт речь о конвертации (преобразовании) формата файла изображения из PNG в JPG и наоборот, с помощью командной строки.
Программа convert входит в набор программ (консольных утилит) для чтения и редактирования файлов множества графических форматов — ImageMagick.
Как использовать команду Convert
Прежде всего в вашей системе должна быть установлена программа ImageMagick. Если она не установлена, выполните следующую команду в терминале для установки в Ubuntu и производные:
sudo apt-get install imagemagick
После того как вы убедитесь, что ImageMagick установлен в системе, можно приступить к конвертации путём применения команды convert входной файл выходной файл.
Например, у меня в папке Изображения, файлового менеджера, находится снимок в формате .png:
Прежде всего необходимо войти в данную папку командой в терминале:
Примечание. Если у вас снимок находится в другой папке, то нужно войти в эту папку, изменив в команде Изображения на название данной папки. Например, если у вас снимок находится в папке Загрузки, то команда будет выглядеть: cd ~/Загрузки и т.п.
После того как вы вошли в искомую папку, выполните в терминале команду, которая конвертирует (преобразует) формат файла из .png в .jpg:
convert терминал.png терминал.jpg
Как видно на снимке, теперь после выполнения команды в папке Изображения у меня появился конвертированный снимок в формате .jpg.
Таким же образом можно преобразовать изображение и наоборот, из формата .jpg в .png.
Команда convert может быть использована более чем в 100 различных опциях.
Например, для изменения размеров снимка. Уменьшить размер изображения, прежде чем он превратится в формат .png:
convert терминал.jpg -resize 200 терминал.png
Для получения списка поддерживаемых форматов команды convert введите и выполните в терминале команду: