zaLinux.ru

Как конвертировать большое количество изображений в другой формат


Массовая конвертация изображений

В статье «Конвертация изображений в любые форматы в 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'

Подробности об изменении размера и сжатии фотографий смотрите в статье: «Уменьшение размера фотографий. Массовое изменение размера фотографий в командной строке».



Рекомендуемые статьи:

Оставить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *