Как сжать картинку и не сойти с ума.
Spoiler: Если вам нужно лишь однажды сжать какое-то JPEG изображение, то смело открывайте Google/Yandex и набирайте "сжать jpg онлайн".
Я же хочу рассказать о том, какие инструменты помогут решить проблему сжатия и конвертации изображений прямо в терминале.
Все аналоги с GUI интерфейсом обычно либо просто зарабатывают деньги на бесплатных библиотеках выдавая за "ноу-хау", либо делают всё то, что можно сделать "руками" (при желании).
Сжать jpeg
Есть разные интересные способы сжать jpeg, но я подобрал интересную утилиту, которая проста в использовании и устанавливается через brew. Называется jpegoptim.
$ brew install jpegoptim $ jpegoptim [-keys] filename.jpg
Без параметров сжимает файл без потерь на сколько возможно, удаляет мета-информацию и в общем-то всё.
!Важно! Перезаписывает текущий файл на сжатый. К счастью, это поведение можно поменять.
С ключами сжимает отлично, главное подобрать нужные параметры. Несколько сценариев использования:
# Сжимает файл до 60 единиц качества (ключ -m от 0 до 100) и не перезаписывает (ключ -n) jpegoptim -n -m 60 file.jpg
# Сжимает файл до 50% (ключ -S) и перезаписывает его jpegoptim -S 50% file.jpg
# Сжимает файл до 50% и кладёт сжатый в папку (ключ -d) jpegoptim -S 50% file.jpg -d compressed/
Более детальные настройки можно посмотреть в man jpegoptim, а короткую инструкцию с помощью tldr jpegoptim.
Как сжать png?
PNG сжать тоже можно прямо в терминале, можно даже сжать сразу все .png файлы в каталоге. Сразу пример:
$ brew install optipng $ optipng *.png
Детальные настройки можно посмотреть с помощью man или просто воспользоваться tldr.
Как объединить изображения в pdf?
$ brew install imagemagick $ convert file1.jpg file2.png file3.gif output.pdf
Ещё, с помощью imagemagick можно jpg превратить в png.
$ convert image.jpg image.png