Разрешение современных смартфонов и цифровых камеры, растет с каждым днем. Проблема возникает, когда нам нужно поделиться этими изображениями, загрузить их в облако или даже сохранить на устройстве с ограниченным объемом памяти. Графические дизайнеры также сталкиваются с этой проблемой, но они хорошо оснащены инструментами, которые могут сжимать изображения, чтобы ими можно было легко поделиться с заинтересованными сторонами.
Для Ubuntu существует множество графических утилит, позволяющих оптимизировать и сжимать jpeg-файлы, но здесь мы рассмотрим инструмент командной строки под названием Jpegoptim. Это особенно полезно для тех, кто работает в терминале и любит выполнять свои задачи, используя минимум системных ресурсов. Jpegoptim может помочь вам в сжатии файлов jpegs, jpg и jfif с потерей и без потери качества, в зависимости от того, что вы ищете.
В этой статье мы расскажем, как установить утилиту командной строки Jpegoptim на Ubuntu. Мы также объясним различные способы использования этого приложения для оптимизации и сжатия файлов изображений jpeg. Статья также поможет вам написать и выполнить сценарий bash, который автоматизирует процесс сжатия всех jpeg-файлов, расположенных в одном каталоге.
Установка Jpegoptim на Ubuntu
Jpegoptim легко доступен в официальном репозитории Ubuntu и может быть легко установлен через командную строку с помощью команды apt-get.
Откройте приложение Terminal либо через системный Поиск приложений, либо через сочетание клавиш Ctrl+Alt+T.
Следующим шагом будет обновление индекса репозитория вашей системы с помощью следующей команды:
1 | sudo apt-get update |
Это поможет вам установить последнюю доступную версию программного обеспечения из Интернета. Обратите внимание, что только авторизованный пользователь может добавлять, удалять и настраивать программное обеспечение на Ubuntu.
Теперь вы готовы к установке Image Jpegoptim; вы можете сделать это, выполнив следующую команду от имени sudo:
1 | sudo apt-get install jpegoptim |
Система может запросить пароль для sudo, а также предложить вам опцию Y/n для продолжения установки. Введите Y и нажмите Enter; программное обеспечение будет установлено на вашу систему. Однако процесс может занять некоторое время в зависимости от скорости вашего Интернета.
Вы можете проверить номер версии программы, а также убедиться, что она действительно установлена в вашей системе, с помощью следующей команды:
1 | jpegoptim --version |
Использование Jpegoptim для сжатия изображений
Давайте рассмотрим возможности Jpegoptim, используя следующие способы его применения:
Сжатие одного изображения без потерь
Если вы хотите сжать одно изображение без потери качества, используйте следующую команду:
1 | jpegoptim image_name.jpg |
Пример:
1 | jpegoptim sample.jpg |
Пожалуйста, имейте в виду, что инструмент перезаписывает существующее изображение, поэтому лучше сохранить исходное изображение в другом месте.
Если вы хотите, чтобы изображение было сжато еще больше, вы можете выполнить ту же команду еще раз. Однако Jpegoptim начнет пропускать сжатие, если достигнет предела, при котором качество изображения будет без потерь при максимальном сжатии.
Вот как будет выглядеть результат в такой ситуации:
Сжать изображение в другую папку
Если вы боитесь, что потеряете исходное изображение из-за того, что Jpegoptim перезапишет его, вы можете указать программе сохранить сжатое изображение в другой папке.
Сначала создайте папку, в которую вы хотите сохранить сжатые изображения. Если вы хотите, чтобы они сохранялись в уже существующую папку, то вам не нужно создавать новую. Затем вы можете использовать следующий синтаксис команды для выполнения сжатия:
1 | jpegoptim -d /[папка назначения] -p [имя_изображения].jpg |
Например:
1 | jpegoptim -d /tmp -p sample.jpg |
Приведенная выше команда сожмет и сохранит мой файл sample.jpg в уже существующей папке с именем "tmp".
Проверка потенциального сжатия
Если вы хотите предварительно проверить, насколько сильно может быть сжато изображение, вы можете смоделировать сжатие изображения с помощью Jpegoptim. Следующая команда не будет сжимать изображение, она просто покажет, насколько сильно оно будет сжато, если вы попытаетесь сжать его с помощью Jpegoptim.
Следующий пример пояснит процесс:
У меня есть изображение jpg с именем sample.jpg. Сначала я выведу его размер с помощью команды du следующим образом:
1 | du sample.jpg |
Затем я использую флаг -n в команде jpegoptim, чтобы узнать о его потенциальном сжатии.
1 | jpegoptim -n sample.jpg |
Когда я перепроверил его размер после использования команды jpegoptim, как указано выше, я не увидел никаких изменений в его размере. Это гарантирует, что команда jpeg с флагом -n только отображает будущий процент сжатия и размер без фактического сжатия изображения.
Сжатие изображений с потерей качества
Иногда мы хотим сжать наши изображения, зная, что этот процесс не будет без потерь. Хорошо то, что в Jpegoptim вы можете указать, с какой потерей качества вы согласны. Существует два способа сжатия изображений "с потерями";
1. Используя флаг -m, указать коэффициент качества/процент: Устанавливает максимальный коэффициент качества изображения (отключает режим оптимизации без потерь, который по умолчанию включен). Эта опция снизит качество тех исходных файлов, которые были сохранены с использованием более высоких настроек качества. В то время как файлы, которые уже имеют более низкие настройки качества, будут сжаты с использованием метода оптимизации без потерь.
Вот как можно указать процент сжатия:
1 | jpegoptim -m [процент_в_числах] image.jpg |
1 | jpegoptim -m 10 sample.jpg |
Это было мое исходное изображение:
А вот как оно выглядит с 10-процентным коэффициентом качества:
2. Использование опции -size для указания размера сжатого изображения: Попытка оптимизировать файл до заданного размера (отключает режим оптимизации без потерь). Целевой размер указывается либо в килобайтах (1 - n)
либо в процентах (1% - 99%) от исходного размера файла.
Вот как можно указать размер в килобайтах для результирующего изображения:
1 | jpegoptim --size=[size-in-kb] image_name.jpg |
1 | jpegoptim --size=100k sample.jpg |
Пакетная оптимизация файлов изображений
Существует несколько способов использования Jpegoptim для сжатия нескольких файлов одновременно.
Первый способ - указать все файлы, которые вы хотите сжать, в одной команде jpegoptim следующим образом:
1 | jpegoptim file1.jpeg file2.jpg file3.jpg |
Команда перезапишет все указанные файлы новыми сжатыми.
Второй способ заключается в том, чтобы указать Jpegoptim сжать все файлы определенного типа, например jpg, находящиеся в одной папке:
1 | jpegoptim *.jpg |
Чтобы посмотреть, как работает эта команда, я перечислил все файлы в папке Pictures с флагом -l. Эта команда выведет общий размер всех изображений, находящихся в текущей папке:
1 | ls -l |
Затем я использовал ту же команду ls -l, чтобы посмотреть, насколько сильно команда Jpegoptim изменила общий размер всех файлов. Вы можете увидеть заметную разницу в общем количестве байт в следующем выводе:
Это были всего несколько файлов, таким образом можно сэкономить много места. Прелесть всего процесса заключается в том, что вы не снижаете качество ваших изображений. Разумеется, вы можете сделать то же самое с другими форматами файлов, поддерживаемыми Jpegoptim.
Третья и очень полезная возможность заключается в том, что вы можете даже использовать сценарий оболочки для автоматического сжатия всех файлов одного типа, расположенных в текущем каталоге. Вот как это сделать:
Bash-сценарий для сжатия всех файлов jpg в текущем каталоге
В этом разделе будет рассказано, как написать сценарий оболочки, который будет сжимать все jpg-файлы, находящиеся в текущем каталоге, в папку с именем "compressed". Сценарий не будет создавать папку; он просто сохранит результат в уже созданную папку с таким именем.
Сначала перейдите в папку Documents, где мы создадим скрипт:
1 | cd ~/Documents |
Вы можете сохранить сценарий в любом удобном для вас месте. Рекомендуется создавать все скрипты в одной папке, чтобы не потерять информацию о том, где вы их сохранили. Лично я предпочитаю сохранять все свои скрипты в папке Documents.
Откройте новый файл скрипта в одном из ваших любимых текстовых редакторов. Мы будем использовать редактор nano, чтобы открыть пустой файл скрипта с именем compressAll.sh
1 | nano compressAll.sh |
В этот пустой файл добавьте следующий скрипт.
1 2 3 4 5 6 | #!/bin/sh # сжать все файлы *.jpg в текущем каталоге # и поместите их в каталог ./compressed # с той же датой модификации, что и исходные файлы. for i in *.jpg; do jpegoptim -d ./compressed -p "$i"; done |
Вместо того чтобы набирать весь сценарий в bash-файл, вы можете скопировать его отсюда и вставить в Терминал, используя Ctrl+Shift+V, или используя опцию Paste из меню правой кнопки мыши.
Вот как будет выглядеть ваш файл:
Теперь выйдите из файла через сочетание клавиш Ctrl+X. После этого вам будет предложено сохранить файл на запрос "Сохранить измененный буфер?". Введите Y и нажмите Enter; теперь ваш файл скрипта сохранен в текущей папке.
Чтобы сделать этот файл исполняемым текущим пользователем, выполните следующую команду в Терминале:
1 | chmod +x compressAll.sh |
Для того чтобы запустить скрипт, измените текущую директорию на ту, чьи jpg-файлы вы хотите сжать (в моем случае это директория Pictures). Убедитесь, что в каталоге есть папка с именем "compressed". Если ее нет, создайте ее перед запуском скрипта.
Наконец, запустите сценарий следующим образом:
1 | /home/[имя пользователя]/Documents/compressAll.sh |
Эта команда выполнит сценарий bash из папки, в которой вы его создали. Именно по этой причине вам пришлось указать полный путь к файлу .sh.
Вы увидите, что все сжатые файлы будут записаны в папку "compressed". Вы можете убедиться в этом с помощью следующей команды:
Это было все об оптимизации изображений с помощью утилиты Jpegoptim. Для получения более подробной информации вы можете обратиться к руководству утилиты, выполнив следующую команду:
1 | man jpegoptim |
Теперь обмен изображениями через Интернет и загрузка их в места с ограниченной пропускной способностью и хранением не будет проблемой.