“Изображения, сохраненные такими программами, как 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)
1 |
rpm -Uhv path-to-jpegoptim-file |
(можно отсюда rpm -Uhv http://valerij.pp.ua/wp-content/uploads/2012/09/jpegoptim-1.2.3-alt1.x86_64.rpm)
2. Поиск файлов и оптимизация
1 |
find -name *.jpg -exec jpegoptim --strip-all '{}' \; |
Выполняет поиск всех *.jpg файлов и оптимизирует их (файлы переписываются). Поиск происходит в текущей директории (для изменения используйте ключи утилиты find).
Для оптимизации PNG используем OptiPNG – свободную программу для уменьшения размера файлов в формате Portable Network Graphics путём их сжатия различными методами с игнорированием ненужных для данного изображения функций PNG, таких как полноцветность для чёрно‐белого изображения.
1. Установка (пример для CentOS)
1 |
rpm -Uhv path-to-optipng-file |
(можно отсюда rpm -Uhv http://valerij.pp.ua/wp-content/uploads/2012/09/optipng-0.6.4-1.el5_.rf_.x86_64.rpm)
2. Поиск файлов и оптимизация
1 |
find -name *.png -exec optipng -o3 '{}' \; |
Всё аналогично. Здесь указывается ключ –oX, где о – сокр. от optimixation, X – уровень сжатия (1-7). На практике не стоит выставлять максимальный уровень сжатия, так как это приводит к значительному увеличению времени обработки и затрате ресурсов (обычно достаточно 3).
После оптимизации изображений показатель Page Speed может значительно увеличиться.

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
Меняет права на файл, меняет пользователя (((
Если дать права на файл chmod 655 1383575974_www.satsis.info_i.jpg
Размер меньше становиться
1,83 КБ (1 875 байт)
и картинку отображает. Интересно
Так ты выполняешь команду под root , а владелец файлов apache, логично что он присвоит всем файлам пользователя root , именно по этому картинки и не отображаются , это приколюха апача, выполняй комманды над файлами не из под рута а из под владельца папок.
Может с какими-то другими ключами нужно запускать?
Спасибо большое автору за инструкции! У меня более сотни тысяч изображений и всё получилось оптимизировать за один проход. Теперь и сайт меньше весит и google доволен.
Извините за тупой вопрос: но с чего начать? я скачала утилиту и что с ней дельше делать?:) Залить на сайт? Куда?
Смотря какой хостинг. Но вобще подразумевается что есть доступ к системе (выделенный сервер например) и можно установить эту утилиту. Процесс установки и оптимизации собственно и описан в статье (для CentOS)
а как будет выглядеть код в пхп? чтобы когда пользователи добавлют фотки, они сразу оптимизировались?
Можете попровать использовать php exec для выполнения этих комманд.
Думаю, лучше не постоянно запускать его, а, например раз в месяц. Можно по крону даже)
Как оптимизировать на хостинге?
http://www.exeducation.kiev.ua
Комментарий