Оптимизация изображений с помощью jpegoptim и optipng (Google Page Speed)

“Изображения, сохраненные такими программами, как Fireworks могут содержать килобайты дополнительных комментариев, а также использовать слишком много цветов, при чем уменьшение цветовой палитры не может заметно снизить качество изображения. Неправильно оптимизированные изображения могут занимать больше места, чем им необходимо; для пользователей на медленных соединениях особенно важно, чтобы размеры изображения были сведены до минимума”, – вот что говорится об оптимизации изображений в инструментах Google Page Speed.
Рекомендации в оригинале можно почитать здесь.

Сразу к сути. Google Page Speed предлагает несколько инструментов для сжатия изображений без потерь для JPEG и PNG файлов (без влияния на качество изображения).

Для JPEG рекомендуются jpegtran или jpegoptim (доступна только на Linux, запускается с опцией --strip-all). Для PNG рекомендуются OptiPNG или PNGOUT.

Оптимизаторы JPEG jpegtran и jpegoptim дают практически одинаковый результат, так что выбор того или иного остаётся за пользователем.

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

1. Установка (пример для CentOS)

(можно отсюда rpm -Uhv http://valerij.pp.ua/wp-content/uploads/2012/09/jpegoptim-1.2.3-alt1.x86_64.rpm)

2. Поиск файлов и оптимизация

Выполняет поиск всех *.jpg файлов и оптимизирует их (файлы переписываются). Поиск происходит в текущей директории (для изменения используйте ключи утилиты find).

Для оптимизации PNG используем OptiPNG – свободную программу для уменьшения размера файлов в формате Portable Network Graphics путём их сжатия различными методами с игнорированием ненужных для данного изображения функций PNG, таких как полноцветность для чёрно‐белого изображения.

1. Установка (пример для CentOS)

(можно отсюда rpm -Uhv http://valerij.pp.ua/wp-content/uploads/2012/09/optipng-0.6.4-1.el5_.rf_.x86_64.rpm)

2. Поиск файлов и оптимизация

Всё аналогично. Здесь указывается ключ –oX, где о – сокр. от optimixation, X – уровень сжатия (1-7). На практике не стоит выставлять максимальный уровень сжатия, так как это приводит к значительному увеличению времени обработки и затрате ресурсов (обычно достаточно 3).

После оптимизации изображений показатель Page Speed может значительно увеличиться.

Оптимизация изображений с помощью jpegoptim и optipng (Google Page Speed): 13 комментариев

  1. find \ -name *.jpg -exec jpegoptim –strip-all ‘{}’ \;
    убивает размер картинок. Картинки не отображаются после обработки
    Centos 6.3

    1382111069_www.satsis.info_20131018181255.jpg 800×450 24bit N JFIF [OK] 50178 -> 48581 bytes (3.18%), optimized.
    1382616305_www.satsis.info_111.jpg 164×121 24bit N JFIF [OK] 5238 –> 4689 byts (10.48%), optimized.
    1382631718_www.satsis.info_dkau.jpg 350×249 24bit N JFIF [OK] 32529 –> 31087 ytes (4.43%), optimized.
    1382631748_www.satsis.info_549497.jpg 450×300 24bit N JFIF [OK] 36560 –> 3593 bytes (1.70%), optimized.
    1383056625_www.satsis.info_1111111111111.jpg 300×225 24bit N JFIF [OK] 15064 -> 14184 bytes (5.84%), optimized.

    • А можно чуть подробнее о

      убивает размер картинок

      ?
      Что с ними происходит? Видно что размер файла не нулевой.

      P.S. Этот пример find \ -name *.jpg -exec jpegoptim –strip-all '{}' \; работает на сервере без проблем (CentOS 6.2)

      • Такое ощущение что у картинки стирает информацию о пикселях…

        До оптимизации
        [root@thumbs]# ls -l
        total 4
        -rw-rw-rw- 1 apache apache 2242 Nov 4 16:38 1383575974_www.satsis.info_i.jpg

        Размер 2,19 КБ (2 242 байт)
        Размеры 60px × 75px

        После оптимизации
        [root@thumbs]# find \ -name *.jpg -exec jpegoptim –strip-all ‘{}’ \;
        find: ` -name’: No such file or directory
        jpegoptim: can’t open –strip-all
        1383575974_www.satsis.info_i.jpg 60×75 24bit N JFIF [OK] 2242 –> 1875 bytes (16.37%), optimized.

        [root@thumbs]# ls -l
        total 4
        -rw——- 1 root root 1875 Nov 15 14:33 1383575974_www.satsis.info_i.jpg

        Меняет права на файл, меняет пользователя (((

  2. Если дать права на файл chmod 655 1383575974_www.satsis.info_i.jpg
    Размер меньше становиться
    1,83 КБ (1 875 байт)

    и картинку отображает. Интересно

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

  3. Спасибо большое автору за инструкции! У меня более сотни тысяч изображений и всё получилось оптимизировать за один проход. Теперь и сайт меньше весит и google доволен.

  4. Извините за тупой вопрос: но с чего начать? я скачала утилиту и что с ней дельше делать?:) Залить на сайт? Куда?

    • Смотря какой хостинг. Но вобще подразумевается что есть доступ к системе (выделенный сервер например) и можно установить эту утилиту. Процесс установки и оптимизации собственно и описан в статье (для CentOS)

  5. а как будет выглядеть код в пхп? чтобы когда пользователи добавлют фотки, они сразу оптимизировались?

Добавить комментарий для Мария Отменить ответ

Ваш e-mail не будет опубликован.