Массовая конвертация изображений
В статье «Конвертация изображений в любые форматы в Linux» показано, как с помощью программы magick можно с лёгкостью конвертировать картинку из одного формата в другой (поддерживаются сотни форматов).
Утилита magick является частью пакета ImageMagick. Подробности по установке ImageMagick, в том числе какие зависимости необходимо установить для поддержки максимального количества форматов, а также описание структуры команды и всех опций смотрите в статье: Руководство по ImageMagick: установка, использование и решение проблем.
Но что если нужно конвертировать не один файл, а несколько десятков или даже сотен фотографий или картинок в другой формат?
Утилита magick прекрасно подходит для массового преобразования и конвертирования большого количества файлов.
Предположим, имеется задача конвертировать все JPG файлы в текущей директории так, чтобы преобразовать их в PNG, HEIF или другой формат и сохранить в указанной папке, при этом каждый файл должен сохранить своё имя.
Прежде всего, обратим внимание, что для того, чтобы не указывать каждый файл отдельно, мы будем использовать «Подстановочные символы в имени файла», то есть в качестве входного файла мы укажем «*.jpg».
В качестве выходного файла мы будем использовать «Указание шаблона имени файлов».
Некоторые «свойства» должны быть определены особым образом для использования. Например, только «свойства» с префиксом «filename:» могут использоваться для изменения выходного имени файла изображения.
Создадим директорию «png»:
mkdir png
Следующая команда поочерёдно считает все файлы .jpg в текущей директории, конвертирует их в формат PNG и сохранит их в директорию «png» с прежними именами:
magick *.jpg -set filename:currentfile '%t' 'png/%[filename:currentfile].png'
Почему ImageMagick сохраняет все изображения в один файл?
Предположим, что нужно решить аналогичную задачу, но конвертировать файлы в другой формат, к примеру, один из GIF, MIFF, TIFF, PDF, MNG, HEIF или HEIC.
Смотрите также: Что такое формат изображения HEIF (или HEIC)?
Программа в целом выполнить указанную задачу, но вы обнаружите, что все изображения сохранены в один файл. Дело в том, что все указанные форматы поддерживают файлы с несколькими картинками.
Поведением magick по умолчанию является сохранить все изображения в один файл, если данный формат это поддерживает. Чтобы изменить это поведение по умолчанию, используйте опцию +adjoin
К примеру, следующая команда конвертирует все изображения в формат .heif и сохранит отдельные файлы в директорию «heif»:
mkdir heif magick *.jpg -set filename:currentfile '%t' +adjoin 'heif/%[filename:currentfile].heif'
Как одновременно конвертировать фотографии и уменьшить их размер
Вы можете сочетать конвертацию изображений с изменением их размера. К примеру следующая команда уменьшит все файлы JPEG в текущей директории до размера 1000 пикселей и конвертирует их в формат HEIF, затем сохранит их все в папку heif с исходным именем файла, к которому будет добавлено новое разрешение фотографии и новое расширение файла:
magick '*.jpg[1000x>]' -set filename:currentfile '%t-%wx%h' +adjoin 'heif/%[filename:currentfile].heif'
Чтобы не добавлялось новое разрешение файла, используйте следующую команду (будет сохранено прежнее имя, но с новым расширением имени файла):
magick '*.jpg[1000x>]' -set filename:currentfile '%t' +adjoin 'heif/%[filename:currentfile].heif'
Вместо изменения разрешения фотографии, вы можете сохранить её размер, но увеличить степень сжатия (уменьшить качество изображения), для этого используйте опцию -quality. Следующая команда прочитает все файлы JPEG, сожмёт их с качеством 40 и конвертирует их в формат HEIF, затем сохранит их все в папку heif с исходным именем файла (изменится только расширение):
magick '*.jpg' -quality 40 -set filename:currentfile '%t' +adjoin 'heif/%[filename:currentfile].heif'
Подробности об изменении размера и сжатии фотографий смотрите в статье: «Уменьшение размера фотографий. Массовое изменение размера фотографий в командной строке».
Связанные статьи:
- Как уменьшить размер фотографий. Массовое сжатие фотографий в командной строке (94.2%)
- Руководство по ImageMagick: установка, использование и решение проблем (71%)
- Ошибки при использовании magick (convert) из пакета ImageMagick и их устранение (71%)
- Конвертация изображений в любые форматы в Linux (71%)
- Модификация изображений в командной строке Linux (71%)
- Ошибка «convert: delegate failed `'potrace' --svg --output '%o' '%i'' @ error/delegate.c/InvokeDelegate/1911» (РЕШЕНО) (RANDOM - 11.7%)