Поиск по сайту:

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


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

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

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

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

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

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

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

О Debian и его производных
apt-get install jpegoptim
or
sudo apt-get install jpegoptim
В системах на базе RedHat

В системах на базе RPM, таких как RHEL, CentOS, Fedora и т. д., вам необходимо установить и включить репозиторий EPEL или, альтернативно, вы можете установить epel. репозиторий непосредственно из командной строки, как показано:

yum install epel-release
dnf install epel-release    [On Fedora 22+ versions]

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

yum install jpegoptim
dnf install jpegoptim    [On Fedora 22+ versions]

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

Синтаксис jpegoptm:

jpegoptim filename.jpeg
jpegoptim [options] filename.jpeg

Давайте теперь сожмем следующее изображение tecmint.jpeg, но прежде чем оптимизировать изображение, сначала выясните фактический размер изображения с помощью команды du, как показано.

du -sh tecmint.jpeg 

6.2M	tecmint.jpeg

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

jpegoptim tecmint.jpeg 

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

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

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

jpegoptim --size=250k tecmint.jpeg

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

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

tecmint@tecmint ~ $ cd img/
tecmint@tecmint ~/img $ ls -l
total 65184
-rwxr----- 1 tecmint tecmint 6680532 Jan 19 12:21 DSC_0310.JPG
-rwxr----- 1 tecmint tecmint 6846248 Jan 19 12:21 DSC_0311.JPG
-rwxr----- 1 tecmint tecmint 7174430 Jan 19 12:21 DSC_0312.JPG
-rwxr----- 1 tecmint tecmint 6514309 Jan 19 12:21 DSC_0313.JPG
-rwxr----- 1 tecmint tecmint 6755589 Jan 19 12:21 DSC_0314.JPG
-rwxr----- 1 tecmint tecmint 6789763 Jan 19 12:21 DSC_0315.JPG
-rwxr----- 1 tecmint tecmint 6958387 Jan 19 12:21 DSC_0316.JPG
-rwxr----- 1 tecmint tecmint 6463855 Jan 19 12:21 DSC_0317.JPG
-rwxr----- 1 tecmint tecmint 6614855 Jan 19 12:21 DSC_0318.JPG
-rwxr----- 1 tecmint tecmint 5931738 Jan 19 12:21 DSC_0319.JPG

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

tecmint@tecmint ~/img $ jpegoptim *.JPG
DSC_0310.JPG 6000x4000 24bit N Exif  [OK] 6680532 --> 5987094 bytes (10.38%), optimized.
DSC_0311.JPG 6000x4000 24bit N Exif  [OK] 6846248 --> 6167842 bytes (9.91%), optimized.
DSC_0312.JPG 6000x4000 24bit N Exif  [OK] 7174430 --> 6536500 bytes (8.89%), optimized.
DSC_0313.JPG 6000x4000 24bit N Exif  [OK] 6514309 --> 5909840 bytes (9.28%), optimized.
DSC_0314.JPG 6000x4000 24bit N Exif  [OK] 6755589 --> 6144165 bytes (9.05%), optimized.
DSC_0315.JPG 6000x4000 24bit N Exif  [OK] 6789763 --> 6090645 bytes (10.30%), optimized.
DSC_0316.JPG 6000x4000 24bit N Exif  [OK] 6958387 --> 6354320 bytes (8.68%), optimized.
DSC_0317.JPG 6000x4000 24bit N Exif  [OK] 6463855 --> 5909298 bytes (8.58%), optimized.
DSC_0318.JPG 6000x4000 24bit N Exif  [OK] 6614855 --> 6016006 bytes (9.05%), optimized.
DSC_0319.JPG 6000x4000 24bit N Exif  [OK] 5931738 --> 5337023 bytes (10.03%), optimized.

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

$ jpegoptim DSC_0310.JPG DSC_0311.JPG DSC_0312.JPG 
DSC_0310.JPG 6000x4000 24bit N Exif  [OK] 6680532 --> 5987094 bytes (10.38%), optimized.
DSC_0311.JPG 6000x4000 24bit N Exif  [OK] 6846248 --> 6167842 bytes (9.91%), optimized.
DSC_0312.JPG 6000x4000 24bit N Exif  [OK] 7174430 --> 6536500 bytes (8.89%), optimized.

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

man jpegoptim 

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

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

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

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

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

О Debian и его производных
apt-get install optipng
or
sudo apt-get install optipng
В системах на базе RedHat
yum install optipng
dnf install optipng    [On Fedora 22+ versions]

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

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

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

optipng filename.png
optipng [options] filename.png

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

tecmint@tecmint ~/img $ ls -lh tecmint.png 
-rw------- 1 tecmint tecmint 350K Jan 19 12:54 tecmint.png

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

tecmint@tecmint ~/img $ optipng tecmint.png 
OptiPNG 0.6.4: Advanced PNG optimizer.
Copyright (C) 2001-2010 Cosmin Truta.

** Processing: tecmint.png
1493x914 pixels, 4x8 bits/pixel, RGB+alpha
Reducing image to 3x8 bits/pixel, RGB
Input IDAT size = 357525 bytes
Input file size = 358098 bytes

Trying:
  zc = 9  zm = 8  zs = 0  f = 0		IDAT size = 249211
                               
Selecting parameters:
  zc = 9  zm = 8  zs = 0  f = 0		IDAT size = 249211

Output IDAT size = 249211 bytes (108314 bytes decrease)
Output file size = 249268 bytes (108830 bytes = 30.39% decrease)

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

tecmint@tecmint ~/img $ ls -lh tecmint.png 
-rw-r--r-- 1 tecmint tecmint 244K Jan 19 12:56 tecmint.png

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

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

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

tecmint@tecmint ~ $ cd img/
tecmint@tecmint ~/img $ optipng *.png

OptiPNG 0.6.4: Advanced PNG optimizer.
Copyright (C) 2001-2010 Cosmin Truta.

** Processing: Debian-8.png
720x345 pixels, 3x8 bits/pixel, RGB
Input IDAT size = 95151 bytes
Input file size = 95429 bytes

Trying:
  zc = 9  zm = 8  zs = 0  f = 0		IDAT size = 81388
                               
Selecting parameters:
  zc = 9  zm = 8  zs = 0  f = 0		IDAT size = 81388

Output IDAT size = 81388 bytes (13763 bytes decrease)
Output file size = 81642 bytes (13787 bytes = 14.45% decrease)

** Processing: Fedora-22.png
720x345 pixels, 4x8 bits/pixel, RGB+alpha
Reducing image to 3x8 bits/pixel, RGB
Input IDAT size = 259678 bytes
Input file size = 260053 bytes

Trying:
  zc = 9  zm = 8  zs = 0  f = 5		IDAT size = 222479
  zc = 9  zm = 8  zs = 1  f = 5		IDAT size = 220311
  zc = 1  zm = 8  zs = 2  f = 5		IDAT size = 216744
                               
Selecting parameters:
  zc = 1  zm = 8  zs = 2  f = 5		IDAT size = 216744

Output IDAT size = 216744 bytes (42934 bytes decrease)
Output file size = 217035 bytes (43018 bytes = 16.54% decrease)
....

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

man optipng

Заключение

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

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