- Оптимизация изображений Linux
- Оптимизация JPEG изображений
- Установка Jpegoptim
- Как использовать jpegoptim
- Оптимизация изображений PNG в Linux
- Установка optipng
- Сжатие изображений с помощью optipng
- Выводы
- Сжатие изображений при помощи CLI и GUI
- 1: Команда convert
- Сжатие за счет качества изображения
- Сжатие за счет пикселей
- Конвертирование формата изображения
- 2: Команда mogrify
- 3: Команда pngcrush для файлов PNG
- 4: Команда jpegoptim для файлов JPG
- 5: Утилита Trimag
- Подводим итоги
Оптимизация изображений Linux
Если у вас есть очень много изображений на домашнем компьютере или сервере, и они занимают слишком много места, то их размер однозначно можно уменьшить даже без потери качества. Также это может быть очень полезным при загрузке изображений в облачное хранилище.
В этой статье мы рассмотрим как выполняется оптимизация изображений Linux. Существует очень много графических инструментов для решения этой задачи, но на самом деле все намного проще. Мы рассмотрим как сжать изображения с помощью двух простых, но очень эффективных консольных утилит командной строки. Вот они:
- jpegoptim — утилита для оптимизации и сжатия изображений без потери качества в формате JPEG;
- optipng — это небольшая программа, которая позволяет уменьшить размер PNG изображений без потери качества.
JPEG и PNG — это наиболее распространенные форматы изображений в сети интернет, поэтому вы сможете оптимизировать почти все изображения.
Оптимизация JPEG изображений
Утилита jpegoptim — это инструмент командной строки, который может использоваться для сжатия изображений в формате JPEG, JPG и JFIF без потери качества. Утилита оптимизирует изображения на основе таблиц Хаффмана. Как вы знаете, в алгоритме JPEG и так используется сжатие, но это сжатие достигается с помощью потери качества, а здесь мы можем оптимизировать размер не меняя картинку.
Установка Jpegoptim
Для установки утилиты в Ubuntu, Debian и основанных на нем дистрибутивах выполните:
sudo apt install jpegoptim
В Fedora, Red Hat, CentOS и других, основанных на них дистрибутивах дела обстоят немного сложнее, вам придется сначала добавить репозиторий epel-release. Вы можете сделать это с помощью такой команды:
sudo yum install epel-release
sudo dnf install epel-release
Затем вы можете установить jpegoptim из только что подключенного репозитория:
sudo yum install jpegoptim
sudo dnf install jpegoptim
Как использовать jpegoptim
Давайте рассмотрим как пользоваться jpegoptim. Использовать утилиту для сжатия изображений linux очень просто. Для этого достаточно выполнить программу и передать ей имя файла. Вот такой синтаксис:
$ jpegoptim опции имя_файла.jpeg
- -d — указать папку, в которую нужно сохранять готовые изображения;
- -f — принудительная оптимизация;
- -m — показатель качества, отменяет сжатие без потерь и устанавливает уровень качества от 0 до 100, чем больше, тем лучше;
- -n — не выполнять реальную оптимизацию, а только показать результат;
- -S — задать размер готового изображения, можно указать в процентах или килобайтах;
- -o — заменить исходный файл;
- -p — сохранить временные метки;
- -P — сохранить права файла.
А теперь, давайте рассмотрим как оптимизировать изображения в linux с помощью jpegoptim. Сначала посмотрим исходный размер:
Дальше выполняем самую простую оптимизацию:
Затем опять смотрим размер:
Как видите, сжатие jpg сработало, и открыв изображение в любой графической программе вы не обнаружите никаких отличий или ухудшения качества, исходник и готовое изображение будут идентичны. Слева оптимизированное, справа — оригинал:
Если хотите, вы можете сжать изображение до определенного размера, но тогда без потерь не получится:
jpegoptim —size=250k image.jpeg
Изображение будет сжато, но качество заметно ухудшится. Если изображений много, то вы можете очень просто использовать пакетное сжатие, для этого просто перейдите в папку с изображениями, а потом выполните команду сжатия указав вместо файла маску, например:
Также вы можете перечислить несколько изображений за раз:
jpegoptim image1.jpg image2.jpg
Чтобы оптимизировать все изображения в определенной папке можно использовать команду xargs вместе с find. Например, сжимаем все изображения в текущей папке с перемещением в папку ~/compressed:
find . -name «*.jpg» | xargs jpegoptim -d ~/compressed -p
Вот и все, теперь вы знаете как сжать jpg изображения в Linux. Дальше мы поговорим о том, как сжать png. Это тоже очень просто.
Оптимизация изображений PNG в Linux
PNG или Portable Network Graphics это растровый формат изображений, разработанный для замены несовершенного в плане сжатия и цветопередачи формата GIF. Размер PNG изображений может сильно отличаться в зависимости от нескольких факторов, таких как глубина цвета, переплетение, перед компрессионный фильтр, используемый алгоритм сжатия и т д.
OptiPNG — это консольная утилита, позволяющая оптимизировать PNG изображения. А именно сжимать размер, восстанавливать метаданные, проверять целостность и т д. С помощью OptiPNG вы можете сжимать файлы без потерь качества, точно также как мы это делали с форматом Jpeg.
Установка optipng
Если вы используете Ubuntu, то программа есть в официальных репозиториях и вы можете ее очень просто установить. Для установки optipng в Debian, Ubuntu и производных наберите:
В Red Hat, CentOS или Fedora все выполняется точно так же, только другой менеджер пакетов:
Сжатие изображений с помощью optipng
Синтаксис утилиты очень прост. Вы можете использовать ее точно так же как и jpegoptim:
$ optipng опции имя_файла.png
Давайте рассмотрим опции утилиты:
- -backup — сохранять копии измененных файлов;
- -dir — папка для записи файлов;
- -force — принудительная запись исходящего файла;
- -out — записать исходящий файл в указанный;
- -simulate — не выполнять никаких действий, а только показать результат;
- -o — установить уровень сжатия от 0 до 7.
Теперь попробуем оптимизировать png в linux. Сначала посмотрим размер файла:
Чтобы выполнить сжатие изображений используйте следующую команду:
Затем опять смотрим размер, в этом примере различий не видно, потому что изображение очень маленькое, но при большем размере они будут значительны:
Напоминаю, что тут тоже сжатие png linux изображений без потерь, а это значит, что вы получите точно такое же изображение только меньшего размера. Также можно указать уровень сжатия, он не влияет на качество картинки, но от него напрямую зависит время работы программы. Значение может быть от 0 до 7 и чем больше, тем сильнее сжатие и тем дольше будет идти обработка:
Для пакетной обработки изображений можно использовать тот же принцип, что и в работе с jpeg:
Выводы
Если вы веб-мастер, и хотите, чтобы изображения на вашем сайте или блоге не занимали лишнего места эти инструменты могут быть очень удобными из полезными. Вы будете экономить не только дисковое пространство, но и пропускную способность сервера. Во всяком случае, теперь вы знаете как выполняется оптимизация изображений linux. Если вы знаете другие, лучшие способы оптимизации, напишите в комментариях!
Обнаружили ошибку в тексте? Сообщите мне об этом. Выделите текст с ошибкой и нажмите Ctrl+Enter.
Сжатие изображений при помощи CLI и GUI
Рост качества изображений значительно увеличил размеры этих файлов. Следовательно, потребность в сжатии больших изображений есть всегда, а поэтому мы предлагаем вашему вниманию несколько методов решения этой проблемы. В этой статье мы поговорим о разных способах уменьшения размера файлов изображений в Linux.
1: Команда convert
Прежде чем мы перейдем к работе с командой convert, нужно убедиться, что она есть у вас в системе.
Команда convert входит в пакет ImageMagick. Пользователи Debian/Ubuntu могут установить ImageMagick, выполнив следующую команду:
sudo apt install imagemagick
После установки пакета вы можете запустить команду man convert, чтобы ознакомиться с операциями, которые она поддерживает.
Сжатие за счет качества изображения
Самый простой способ уменьшить размер изображения — снизить его качество. это делается при помощи этой команды:
Команда convert значительно снизит качество изображения. Проверим новый размер файла следующим образом:
Команда du покажет объем диска, который занимают файлы в Linux. В приведенной выше команде мы выводим объем пространства, который занимают все версии “jd_logo”.
Сжатие за счет пикселей
Размер файла изображения можно также уменьшить, если уменьшить количество пикселей. Для этого нужно указать новую ширину и высоту:
Снижение качества сжатого изображения можно увидеть, если растянуть его размеры.
Соотношение сторон изображения восстанавливается, несмотря на то, что размеры, указанные в команде, нарушают их исходное соотношение. Идея конвертирования в данном случае заключается в том, что уменьшенное изображение должно поместиться в заданные размеры.
Чтобы уменьшить изображение до точных размеров без учета соотношения сторон, нужно добавить символ ! после параметра resize.
Конвертирование формата изображения
Некоторые сайты поддерживают только определенные расширения файлов, поэтому команда convert может также конвертировать формат изображения.
Если параметр не указан, снижение качества составляет 92%. В приведенном выше фрагменте мы конвертировали файл изображения png в файл jpg.
У команды convert сотни функций: в их числе поворот, применение эффектов или рисование на изображении. Чтобы узнать больше о данной утилите форматирования изображений обратитесь к её мануалу с помощью команды man convert.
Чтобы конвертировать несколько файлов, нам нужен скрипт bash, который будет выполнять цикл для всех изображений. В качестве альтернативы для обработки нескольких файлов изображений можно использовать команду mogrify, которая входит в пакет ImageMagick.
2: Команда mogrify
Синтаксис этой команды выглядит так:
mogrify [OPTIONS] [FILE_LIST]
Основное различие между командами convert и mogrify заключается в том, что команда mogrify применяет операции к исходному файлу изображения, а convert этого не делает.
Также команда mogrify может обрабатывать очередь из нескольких файлов. Например:
3: Команда pngcrush для файлов PNG
pngcrush — это оптимизатор файлов PNG (Portable Network Graphics). Он сжимает файл изображения, пропуская его через разные методы сжатия и фильтры.
Чтобы установить его, пользователи Debian/Ubuntu могут выполнить следующую команду:
sudo apt get install pngcrush
Пользователи других дистрибутивов Linux могут установить его с помощью стандартных команд установки, после которых следует указать имя программы — pngcrush.
После завершения установки мы можем уменьшить размер файла PNG с помощью следующей команды:
Опция -brute пропускает файл через 114 методов фильтрации/сжатия. Этот процесс занимает несколько секунд. Вместо этой опции пользователи могут выбрать фильтры, уровни и стратегии оптимизации.
Типы фильтров и другие свойства можно узнать в мануале — он доступен по команде man pngcrush.
4: Команда jpegoptim для файлов JPG
jpegoptim — это компрессор файлов JPG (Joint Photographic Group). Эта команда поддерживает процент и целевой размер файла в качестве параметров для сжатия изображения.
Установка ее очень простая:
sudo apt install jpegoptim
После завершения установки можно запустить ее:
Утилита jpegoptim перезаписывает исходное изображение, поэтому мы рекомендуем сохранять резервный файл. Особенностью этой утилиты является то, что она принимает целевой размер файла, что может быть полезным при загрузке изображений определенных размеров.
На приведенном скриншоте показано, что мы сжали файл размером 260 КБ до 20 КБ.
Качество изображения остается прежним, несмотря на уменьшение размера на 90%. Команда также поддерживает процентное сжатие.
Подробно об этой утилите вы можете узнать в мануале, который доступен по команде man jpegoptim.
5: Утилита Trimag
Trimage — это базовая программа, которая работает по принципу drag and drop. Добавленные файлы автоматически сжимаются до возможного размера без потерь.
Установить программу можно так же, как и предыдущие команды, которые мы рассмотрели:
После завершения установки мы можем получить доступ к команде, выполнив поиск “trimage” в системе. Окно trimage выглядит следующим образом:
- Имя файла
- Размер исходного изображения
- Размер конвертированного изображения
- Процент сжатия
Утилита перезаписывает исходное изображение. Сжатие минимальное и происходит без потерь.
GIMP ( GNU Image Manipulation Program ) — хорошая альтернатива для сжатия изображений с помощью графического интерфейса, но она слишком сложная, потому мы не будем рассматривать ее в данном мануале.
Подводим итоги
Команды из пакета ImageMagick — самый простой и эффективный способ уменьшить размер файлов изображений в Linux.