Сжатие изображений при помощи CLI и GUI

Рост качества изображений значительно увеличил размеры этих файлов. Следовательно, потребность в сжатии больших изображений есть всегда, а поэтому мы предлагаем вашему вниманию несколько методов решения этой проблемы. В этой статье мы поговорим о разных способах уменьшения размера файлов изображений в Linux.

1: Команда convert

Прежде чем мы перейдем к работе с командой convert, нужно убедиться, что она есть у вас в системе.

Команда convert входит в пакет ImageMagick. Пользователи Debian/Ubuntu могут установить ImageMagick, выполнив следующую команду:

sudo apt install imagemagick

После установки пакета вы можете запустить команду man convert, чтобы ознакомиться с операциями, которые она поддерживает.

Сжатие за счет качества изображения

Самый простой способ уменьшить размер изображения — снизить его качество. это делается при помощи этой команды:

convert <INPUT_FILE> -quality 10% <OUTPUT_FILE>

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

du -h jd_logo*

Команда du покажет объем диска, который занимают файлы в Linux. В приведенной выше команде мы выводим объем пространства, который занимают все версии “jd_logo”.

Сжатие за счет пикселей

Размер файла изображения можно также уменьшить, если уменьшить количество пикселей. Для этого нужно указать новую ширину и высоту:

convert <INPUT_FILE> -resize 200x200 <OUTPUT_FILE>

Снижение качества сжатого изображения можно увидеть, если растянуть его размеры.

Соотношение сторон изображения восстанавливается, несмотря на то, что размеры, указанные в команде, нарушают их исходное соотношение. Идея конвертирования в данном случае заключается в том, что уменьшенное изображение должно поместиться в заданные размеры.

Чтобы уменьшить изображение до точных размеров без учета соотношения сторон, нужно добавить  символ ! после параметра resize.

convert <INPUT_FILE> -resize 200x200! <OUTPUT_FILE>

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

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

convert <INPUT_FILE> <OUTPUT_FILE>

Если параметр не указан, снижение качества составляет 92%. В приведенном выше фрагменте мы конвертировали файл изображения png в файл jpg.

У команды convert сотни функций: в их числе поворот, применение эффектов или рисование на изображении. Чтобы узнать больше о данной утилите форматирования изображений обратитесь к её мануалу с помощью команды man convert.

Чтобы конвертировать несколько файлов, нам нужен скрипт bash, который будет выполнять цикл для всех изображений. В качестве альтернативы для обработки нескольких файлов изображений можно использовать команду mogrify, которая входит в пакет ImageMagick.

2: Команда mogrify

Синтаксис этой команды выглядит так:

mogrify [OPTIONS] [FILE_LIST]

Основное различие между командами convert и mogrify заключается в том, что команда mogrify применяет операции к исходному файлу изображения, а convert этого не делает.

Также команда mogrify может обрабатывать очередь из нескольких файлов. Например:

mogrify -quality 10 *.jpg

3: Команда pngcrush для файлов PNG

pngcrush — это оптимизатор файлов PNG (Portable Network Graphics). Он сжимает файл изображения, пропуская его через разные методы сжатия и фильтры.

Чтобы установить его, пользователи Debian/Ubuntu могут выполнить следующую команду:

sudo apt get install pngcrush

Пользователи других дистрибутивов Linux могут установить его с помощью стандартных команд установки, после которых следует указать имя программы — pngcrush.

После завершения установки мы можем уменьшить размер файла PNG с помощью следующей команды:

pngcrush -brute <INPUT_FILE> <OUTPUT_FILE>

Опция -brute пропускает файл через 114 методов фильтрации/сжатия. Этот процесс занимает несколько секунд. Вместо этой опции пользователи могут выбрать фильтры, уровни и стратегии оптимизации.

Типы фильтров и другие свойства можно узнать в мануале — он доступен по команде man pngcrush.

4: Команда jpegoptim для файлов JPG

jpegoptim — это компрессор файлов JPG (Joint Photographic Group). Эта команда поддерживает процент и целевой размер файла в качестве параметров для сжатия изображения.

Установка ее очень простая:

sudo apt install jpegoptim

После завершения установки можно запустить ее:

jpegoptim --size=<TARGET_SIZE> <INPUT_FILE>

Утилита jpegoptim перезаписывает исходное изображение, поэтому мы рекомендуем сохранять резервный файл. Особенностью этой утилиты является то, что она принимает целевой размер файла, что может быть полезным при загрузке изображений определенных размеров.

На приведенном скриншоте показано, что мы сжали файл размером 260 КБ до 20 КБ.

Качество изображения остается прежним, несмотря на уменьшение размера на 90%. Команда также поддерживает процентное сжатие.

Подробно об этой утилите вы можете узнать в мануале, который доступен по команде man jpegoptim.

5: Утилита Trimag

Trimage — это базовая программа, которая работает по принципу drag and drop. Добавленные файлы автоматически сжимаются до возможного размера без потерь.

Установить программу можно так же, как и предыдущие команды, которые мы рассмотрели:

sudo apt install trimage

После завершения установки мы можем получить доступ к команде, выполнив поиск “trimage” в системе. Окно trimage выглядит следующим образом:

В столбцах указано:

  • Имя файла
  • Размер исходного изображения
  • Размер конвертированного изображения
  • Процент сжатия

Утилита перезаписывает исходное изображение. Сжатие минимальное и происходит без потерь.

GIMP (GNU Image Manipulation Program) — хорошая альтернатива для сжатия изображений с помощью графического интерфейса, но она слишком сложная, потому мы не будем рассматривать ее в данном мануале.

Подводим итоги

Команды из пакета ImageMagick — самый простой и эффективный способ уменьшить размер файлов изображений в Linux.

Читайте также: Что делает файл .bashrc в Linux

Добавить комментарий