Уменьшить размер jpg linux

Обновлено: 06.07.2024

Если на компьютере имеется достаточное количество изображений, они занимают слишком много места, то их размер однозначно можно уменьшить даже без потери качества. Также это может быть очень полезным при загрузке изображений в облачное хранилище.

В статье рассмотрим как выполняется оптимизация изображений Linux. Есть разнообразие графических инструментов для решения этой задачи, но на деле все проще. Дальше рассмотрим как сжать изображения с помощью двух простых, но очень эффективных консольных утилит командной строки: jpegoptim - утилита для оптимизации и сжатия изображений без потери качества в формате JPEG; optipng - это небольшая программа, которая позволяет уменьшить размер PNG изображений без потери качества.

JPEG и PNG - это наиболее распространенные форматы изображений в сети интернет, поэтому вы сможете оптимизировать почти все изображения

Оптимизация JPEG изображений

Есть такая утилита, jpegoptim - инструмент командной строки, который можно использовать для использоваться для сжатия изображений в формате JPEG, JPG и JFIF без потери качества. Утилита оптимизирует изображения на основе таблиц Хаффмана. В алгоритме JPEG и так используется сжатие, но это сжатие достигается с помощью потери качества, а здесь мы можем оптимизировать размер не меняя картинку.

УСТАНОВКА JPEGOPTIM

Для установки утилиты в Ubuntu, Debian и основанных на нем дистрибутивах выполните:

В Fedora, Red Hat, CentOS и других, основанных на них дистрибутивах дела обстоят немного сложнее, вам придется сначала добавить репозиторий epel-release. Вы можете сделать это с помощью такой команды:

Затем вы можете установить jpegoptim из только что подключенного репозитория:

КАК ИСПОЛЬЗОВАТЬ JPEGOPTIM

Давайте рассмотрим как пользоваться jpegoptim. Использовать утилиту для сжатия изображений linux очень просто. Для этого достаточно выполнить программу и передать ей имя файла. Вот такой синтаксис:

Рассмотрим опции утилиты:

  • -d - указать папку, в которую нужно сохранять готовые изображения;
  • -f - принудительная оптимизация;
  • -m - показатель качества, отменяет сжатие без потерь и устанавливает уровень качества от 0 до 100, чем больше, тем лучше;
  • -n - не выполнять реальную оптимизацию, а только показать результат;
  • -S - задать размер готового изображения, можно указать в процентах или килобайтах;
  • -o - заменить исходный файл;
  • -p - сохранить временные метки;
  • -P - сохранить права файла.

Рассмотрим как оптимизировать изображения в linux с помощью jpegoptim. Сначала посмотрим исходный размер:

Оптимизация изображений в Linux

Дальше выполняем самую простую оптимизацию:

Оптимизация изображений в Linux

Затем опять смотрим размер:

Оптимизация изображений в Linux

Как можно увидеть, сжатие jpg сработало, и открыв изображение в любой графической программе не будет отличий или ухудшения качества, исходник и готовое изображение будут идентичны. Слева оптимизированное, справа - оригинал:

Оптимизация изображений в Linux

Если хотите, вы можете сжать изображение до определенного размера, но тогда без потерь не получится:

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

Оптимизация изображений в Linux

Также вы можете перечислить несколько изображений за раз:

Чтобы оптимизировать все изображения в определенной папке можно использовать команду xargs вместе с find. Например, сжимаем все изображения в текущей папке с перемещением в папку

Вот и все, теперь вы знаете как сжать 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:

Давайте рассмотрим опции утилиты:

  • -backup - сохранять копии измененных файлов;
  • -dir - папка для записи файлов;
  • -force - принудительная запись исходящего файла;
  • -out - записать исходящий файл в указанный;
  • -simulate - не выполнять никаких действий, а только показать результат;
  • -o - установить уровень сжатия от 0 до 7.

Теперь попробуем оптимизировать png в linux. Сначала посмотрим размер файла:

Оптимизация изображений в Linux

Чтобы выполнить сжатие изображений используйте следующую команду:

Затем опять смотрим размер, в этом примере различий не видно, потому что изображение очень маленькое, но при большем размере они будут значительны:


Здесь тоже сжатие png linux изображений без потерь, а это значит, что вы получите точно такое же изображение только меньшего размера. Также можно указать уровень сжатия, он не влияет на качество картинки, но от него напрямую зависит время работы программы. Значение может быть от 0 до 7 и чем больше, тем сильнее сжатие и тем дольше будет идти обработка:


Для пакетной обработки изображений можно использовать тот же принцип, что и в работе с jpeg:

Очень долгое время я пользовался программой RIOT, но на тот период я плотно сидел на операционных системах семейства Windows. И вот на протяжении уже нескольких лет я использую ОС Ubuntu. Долгое время я работал с RIOT установленным через wine. С сегодняшнего дня я решил использовать меньше костылей и заняться вплотную изучением команд терминала Linux. На сайте программы RIOT есть ссылка на скачивание плагина для популярного редактора Gimp. Но запускать софт такого размера ради сжатия одного изображения мне крайне не хочется.

ImageMagick или как сжимать изображения в ОС Linux

Поэтому сегодня речь пойдет об утилите ImageMagick.

ImageMagick это огромный бесплатный многоплатформенный комплекс утилит, который поддерживается многими языками программирования, и существует как отдельный комплекс. Думаю тем, кто как-то связан с веб-разработкой, с ImageMagick знаком не понаслышке.
Конечно может, кому то покажется совершенно неудобным работать с изображениям с помощью консольной утилиты. Но я в любом случае советую попробовать.

Установка ImageMagick

На данный момент моей операционной системой является Linux Ubuntu 14.04, поэтому и примеры буду приводить именно из нее. Итак перейдем к установке ImageMagick в Linux Ubuntu 14.04:
Перед тем как устанавливать этот пакет, проверьте, возможно он у вас уже есть, и какая у него версия:

dpkg -s imagemagick

Это команда проверит какая версия пакета ImageMagick установлена в вашей системе.
У меня этот пакет оказался установленным. Для тех у кого этого пакета нет, выполните следующую команду(собственно сама установка):

sudo apt-get install imagemagick

Команды для работы ImageMagick в терминале

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

convert <input_image> <commands> <out_image>

Что бы просто конвертировать изображение одного формата в другой формат, нужно сделать следующее:

convert img.jpg img.jpg

-quality

Уровень сжатия изображения можно указать с помощью параметра -quality:

convert img.jpg -quality 75 img1.jpg

Вы можете указать здесь в качестве значения цифры от 1 до 100. По умолчанию используется значение 92. Я обычно для блога сжимаю с параметром 75.

-resize

Для того что бы изменить размер изображения нужно воспользоваться параметром -resize:

convert img.jpg -resize 100×150 img1.jpg

convert img.jpg -resize 100×150 img1.jpg

Сжатие изображения по ширине до 100px, при этом высота будет сжата пропорционально

convert img.jpg -resize 100 img1.jpg

Аналогичное предыдущему, только здесь изображение сжимается по высоте до 150px

convert img.jpg -resize ×150 img1.jpg

convert img.jpg -resize 100×150! img1.jpg

convert img.jpg -resize 20% img1.jpg

-rotate

Для того что бы повернуть изображение существует параметр -rotate, где значение указывается в градусах:

convert img.jpg -rotate 20 img1.jpg

Группировка команд

convert img.jpg -resize 100×400 -rotate 120 -quality 75 img.jpg

identify <commands> <image>

Сокращенная информация о изображении:

А та же команда с параметром -verbose выведет полную информацию о изображении.

identify -verbose img.jpg

Пакетная обработка изображений с помощью ImageMagick

Я сам ей практически и не пользуюсь. Мне чаще все таки нужно работать с отдельными изображениями. Следующая команда обработает все изображения с разрешением .jpg повернет их на 180 градусов и запишет в файлы с новым именем rotated-предыдущее имя файла.

for file in *.jpg; do convert $file -rotate 180 rotated-$file; done

  • Open with Desktop
  • View raw
  • Copy raw contents Copy raw contents Loading

Copy raw contents

Copy raw contents

Как оптимизировать и сжать JPEG или PNG изображений в Linux командная строка

У вас много изображений, и вы хотите оптимизировать и сжать изображения, не теряя при этом исходного качества, прежде чем загружать их в какое-либо облачное или локальное хранилище? Существует множество приложений с графическим интерфейсом, которые помогут вам оптимизировать изображения. Тем не менее, вот две простые утилиты командной строки для оптимизации изображений:

  1. jpegoptim - это утилита для оптимизации / сжатия файлов JPEG без потери качества.
  2. OptiPNG - небольшая программа, которая оптимизирует изображения PNG до меньшего размера без потери какой-либо информации.

Сжатие или оптимизация изображений JPEG из командной строки

jpegoptim - инструмент командной строки, который можно использовать для оптимизации и сжатия файлов JPEG, JPG и JFIF без потери его фактического качества. Этот инструмент поддерживает оптимизацию без потерь, которая основана на оптимизации таблиц Хаффмана.

Установите jpegoptim в Linux

Чтобы установить jpegoptim в своих системах Linux, выполните следующую команду на своем терминале.

Debian и его производных

В системах на основе RedHat

Затем установите программу jpegoptim из репозитория, как показано ниже:

Как использовать Jpegoptim Image Optimizer

Здесь фактический размер файла 6,2 МБ, теперь сожмите этот файл, выполнив:

Оптимизируйте изображение JPEG в Linux

Оптимизируйте изображение JPEG в Linux

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

Приведенная выше команда оптимизирует изображения до максимально возможного размера. Тем не менее, вы можете сжать данное изображение до определенного размера, но это отключает оптимизацию без потерь.

Например, давайте сжимаем выше изображения с 5,6 МБ до 250k.

Оптимизировать размер изображения Fix

Оптимизировать размер изображения Fix

Пакетное сжатие и оптимизация изображений JPEG

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

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

Вы также можете сжать несколько выбранных изображений одновременно:

Более подробную информацию об инструменте jpegoptim можно найти на страницах руководства.

Сжатие или оптимизация изображений PNG из командной строки

OptiPNG - инструмент командной строки, используемый для оптимизации и сжатия файлов PNG (переносимая сетевая графика) без потери исходного качества.

Установка и использование OptiPNG очень похожи на jpegoptim.

Установите OptiPNG в Linux

Чтобы установить OptiPNG в своих системах Linux, выполните следующую команду на своем терминале.

Debian и его производных

В системах на основе RedHat

Примечание: Для установки программы optipng у вас должно быть включено хранилище epel в ваших системах на основе RHEL / CentOS.

Как использовать Оптимизатор изображений OptiPNG

Общий синтаксис optipng:

Давайте сжимаем изображение tecmint.jpg , но перед оптимизацией сначала проверим фактический размер изображения, как показано:

Здесь фактический размер файла выше изображения 350K, теперь сожмите этот файл, запустив:

Как видно из вышеприведенного вывода, размер файла tecmint.jpg был уменьшен до 30,39%. Теперь проверьте размер файла еще раз, используя:

Откройте сжатое изображение в любом приложении для просмотра изображений, вы не найдете каких-либо существенных различий между исходным и сжатым файлами. Исходное и сжатое изображения будут иметь одинаковое качество.

Пакетное сжатие и оптимизация изображений PNG

Чтобы сжать пакетные или несколько изображений PNG одновременно, просто перейдите в каталог, в котором находятся все изображения, и выполните следующую команду для сжатия.

Для получения более подробной информации о optipng проверьте справочные страницы.

Если у вас есть очень много изображений на домашнем компьютере или сервере, и они занимают слишком много места, то их размер однозначно можно уменьшить даже без потери качества. Также это может быть очень полезным при загрузке изображений в облачное хранилище.

В этой статье мы рассмотрим как выполняется оптимизация изображений 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 опции имя_файла.jpg

Рассмотрим опции утилиты:

  • -d - указать папку, в которую нужно сохранять готовые изображения;
  • -f - принудительная оптимизация;
  • -m - показатель качества, отменяет сжатие без потерь и устанавливает уровень качества от 0 до 100, чем больше, тем лучше;
  • -n - не выполнять реальную оптимизацию, а только показать результат;
  • -S - задать размер готового изображения, можно указать в процентах или килобайтах;
  • -o - заменить исходный файл;
  • -p - сохранить временные метки;
  • -P - сохранить права файла.

А теперь, давайте рассмотрим как оптимизировать изображения в linux с помощью jpegoptim. Сначала посмотрим исходный размер:

jpgoptim1

Дальше выполняем самую простую оптимизацию:

jpgoptim2

Затем опять смотрим размер:

jpgoptim3

Как видите, сжатие jpg сработало, и открыв изображение в любой графической программе вы не обнаружите никаких отличий или ухудшения качества, исходник и готовое изображение будут идентичны. Слева оптимизированное, справа - оригинал:

jpgoptim

Если хотите, вы можете сжать изображение до определенного размера, но тогда без потерь не получится:

jpegoptim --size=250k image.jpg

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

jpgoptim4

Также вы можете перечислить несколько изображений за раз:

jpegoptim image1.jpg image2.jpg

Чтобы оптимизировать все изображения в определенной папке можно использовать команду xargs вместе с find. Например, сжимаем все изображения в текущей папке с перемещением в папку

find . -name "*.jpg" | xargs jpegoptim -d

Вот и все, теперь вы знаете как сжать jpg изображения в Linux. Дальше мы поговорим о том, как сжать png. Это тоже очень просто.

Оптимизация изображений PNG в Linux

PNG или Portable Network Graphics это растровый формат изображений, разработанный для замены несовершенного в плане сжатия и цветопередачи формата GIF. Размер PNG изображений может сильно отличаться в зависимости от нескольких факторов, таких как глубина цвета, переплетение, перед компрессионный фильтр, используемый алгоритм сжатия и т д.

OptiPNG - это консольная утилита, позволяющая оптимизировать PNG изображения. А именно сжимать размер, восстанавливать метаданные, проверять целостность и т д. С помощью OptiPNG вы можете сжимать файлы без потерь качества, точно также как мы это делали с форматом Jpeg.

Установка optipng

Если вы используете Ubuntu, то программа есть в официальных репозиториях и вы можете ее очень просто установить. Для установки optipng в Debian, Ubuntu и производных наберите:

sudo apt install optipng

В Red Hat, CentOS или Fedora все выполняется точно так же, только другой менеджер пакетов:

sudo yum install optipng

sudo dnf install optipng

Сжатие изображений с помощью optipng

Синтаксис утилиты очень прост. Вы можете использовать ее точно так же как и jpegoptim:

$ optipng опции имя_файла.jpg

Давайте рассмотрим опции утилиты:

  • -backup - сохранять копии измененных файлов;
  • -dir - папка для записи файлов;
  • -force - принудительная запись исходящего файла;
  • -out - записать исходящий файл в указанный;
  • -simulate - не выполнять никаких действий, а только показать результат;
  • -o - установить уровень сжатия от 0 до 7.

Теперь попробуем оптимизировать png в linux. Сначала посмотрим размер файла:

pngoptim

Чтобы выполнить сжатие изображений используйте следующую команду:

pngoptim1

Затем опять смотрим размер, в этом примере различий не видно, потому что изображение очень маленькое, но при большем размере они будут значительны:

pngoptim

Напоминаю, что тут тоже сжатие png linux изображений без потерь, а это значит, что вы получите точно такое же изображение только меньшего размера. Также можно указать уровень сжатия, он не влияет на качество картинки, но от него напрямую зависит время работы программы. Значение может быть от 0 до 7 и чем больше, тем сильнее сжатие и тем дольше будет идти обработка:

optipng -o 7 impge.jpg

pngoptim2

Для пакетной обработки изображений можно использовать тот же принцип, что и в работе с jpeg:

pngoptim3

Выводы

Если вы веб-мастер, и хотите, чтобы изображения на вашем сайте или блоге не занимали лишнего места эти инструменты могут быть очень удобными из полезными. Вы будете экономить не только дисковое пространство, но и пропускную способность сервера. Во всяком случае, теперь вы знаете как выполняется оптимизация изображений linux. Если вы знаете другие, лучшие способы оптимизации, напишите в комментариях!

Разрешение фотографий, которые делают с помощью цифровых камер и смартфонов, постоянно увеличивается. Появившийся недавно в продаже Nikon D800 с разрешением 36,3 мегапиксел - это уже далеко не предел. В связи с ростом количества снимков в высоком разрешении часто требуется их постобработка с целью уменьшения размера для последущей их загрузки в онлайн-хранилища и облачные сервисы, так как размер предоставляемого там дискового пространства как правило ограничен.

На самом деле сжатие изображений формата JPEG в Linux не представляет сложности, так как есть утилита командной строки "jpegoptim", которая позволяет оптимизировать jpeg-изображения без потери качества. Если ваше дисковое пространство или трафик действительно сильно ограничены, jpegoptim позволяет также производить сжатие с потерями, чтобы получить файл требуемого размера.

Установка Jpegoptim в Linux

Установка jpegoptim в Ubuntu, Debian или Linux Mint:

Установка jpegoptim в Fedora:

Для установки jpegoptim в CentOS/RHEL, сначала активируйте репозиторий EPEL, затем введите:

Сжатие изображений JPEG без потерь

Для сжатия изображения без потерь используется команда:

Обратите внимание, что при этом исходное изображение перезаписывается сжатым.

Если сжатие изображения без потерь уже невозможно, jpegoptim не будет перезаписывать файл.

Если вы хотите сохранить исходное изображение, с помощью опции "-d" укажите директорию для сохранения сжатого изображения.

Если вы хотите сохранить время создания/модификации исходного изображения, используйте опцию "-p". При этом сжатое изображение будет записано с той же датой и временем, что и оригинальный файл.

Если вы хотите просто проверить возможность и степень сжатия, без его выполнения, используйте опцию "-n". При этом сжатие будет смоделировано, и выведен его без результат.

Сжатие изображений JPEG с потерями

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

В этом случае используйте опцию "-m<maximum-quality>", где качество задается в диапазоне от 0 до 100 (0 - наихудшее качество, 100 - наилучшее качество).
Например, для сжатия изображения с 50% качеством:

Ценой снижения качества вы получите файл меньшего размера.

сжатие с потерями

Пакетное сжатие изображений

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

Читайте также: