На вашем компьютере может быть много картинок, они занимают непозволительно много места, можно ли с этим что-то сделать? Например, сжать без потери качества. Сжатие может также весьма уместным в случае загрузки пакета картинок на облачный сервер. Именно об этом дальше пойдет речь в нашей статье.
Известно немало различных графических инструментов, которые позволяют решить эту задачу, но на самом деле все намного проще. Как сжать изображения с помощь утилит?
Есть два полноценных вариант:
JPEG - самый распространенный формат картинок, в этой статье рассмотрим сжатие этого формата изображений. Поэтому рассмотрим работу в jpegoptim, благодаря которому удастся выполнить сжатие картинок этого формата.
Программа jpegoptim - полноценный инструмент, позволяющий использовать для сжатия формата JPEG, JPG и JFIF. Причем сжатие происходит без потери качества. Утилита оптимизирует картинки на основе принципов таблицы Хаффмана. В алгоритме JPEG происходит сжатие, но работает оно так, что снижает качество. Сжатие же с помощью jpegoptim не вредит качеству картинки.
Чтобы установить программу в Ubuntu нужно выполнить:
$ sudo apt install jpegoptim
В Fedora, CentOS и схожих дистрибутивах необходимо сперва добавить репозиторий epel-release.
Это можно выполнить командой:
$ sudo yum install epel-release
Или:
$ sudo dnf install epel-release
Можно установить jpegoptim из недавно подключенного репозитория:
$ sudo yum install jpegoptim
Или:
$ sudo dnf install jpegoptim
Применять программу в Linux не составит особого труда. Нужно выполнить программу и передать имя файла.
Синтаксис будет следующим:
$ jpegoptim опции имя_файла.jpeg
Рассмотрим опции утилиты:
Как выполнить оптимизацию картинки при помощи программы?
Сначала посмотрим исходный размер:
$ du image.jpg
Выполняем самую простую оптимизацию:
$ jpegoptim image.jpg
Смотрим размер:
$ du image.jpg
Сжатие jpg произошло, открываем картинку любой программой и видим, что качество вообще не изменилось. Исходник и готовое изображение идентичны.
Слева картинка после сжатия, справа - оригинал:
Нужно сжать изображение до определенного размера?
Придется жертвовать качеством:
$ jpegoptim --size=250k image.jpeg
Картинка будет сжата, но качество пострадает. Если картинок много, используйте пакетное сжатие: перейдите в папку с картинками, выполните команду сжатия:
$ cd images/
$ jpegoptim *.jpg
Также вы можете перечислить несколько изображений разом:
$ jpegoptim image1.jpg image2.jpg
Для оптимизации всех картинок в конкретном каталоге можно командой xargs вместе с find. Например, оптимизируем все картинки из каталога с их последующем переносом ~/compressed:
$ find . -name "*.jpg" | xargs jpegoptim -d ~/compressed -p
Сжать jpg изображения в Linux очень просто и вы в этом могли убедиться. В следующей статье расскажем, как сжать png.