====== Оптимизация картинок в Web ======
Источник - http://highload.com.ua/index.php/2010/07/02/optimizaciya-kartinok/\\
Когда речь идет об оптимизации Web приложений, большое внимание следует уделять оптимизации клиентской части. Размер статических данных обычно в разы превосходит размер динамически генерируемых. Большинство этих данных - это медиа данные. Чаще всего это изображения (картинки для верстки и фотографии), кроме того есть flash, видео, аудио и т.п.\\
В этой статье рассмотрим основные инструменты оптимизации картинок для Web приложений.\\
===== Суть оптимизации картинок =====
Зачастую файлы изображений хранят множество дополнительной информации, например детали о съемке фото, комментарии, текстовое описание, географические данные и т.п. При использовании в Web практически всегда эти данные не нужны. Существуют инструменты, которые позволяют вырезать всю ненужные мета данные, а также делать определенную оптимизацию изображения без потери качества. В некоторых случаях это может привести к 90% уменьшению размеров изображений.
Кроме этого, важно выбирать подходящий формат для каждой конкретной картинки, что позволит использовать максимально эффективное сжатие.
===== Форматы =====
В Web можно использовать три формата изображений:
* **PNG** - сегодня это основной формат, ввиду эффективности сжатия и функциональных особенностей. Поддерживается всеми современными браузерами. Этот формат следует всегда выбирать по умолчанию для графики
* **GIF** - этот формат следует использовать, когда необходима анимация. Также в некоторых случаях (очень маленькие файлы - менее 10х10 пикселей) этот формат обеспечивает лучшее сжатие, чем PNG
* **JPEG** - выбирайте всегда для фотографий. Этот выбор лучше, чем PNG, т.к. JPEG позволяет выбрать более эффективную стратегию сжатия благодаря размытию (экономия за счет небольшой потери качества)
===== Инструменты для оптимизации =====
==== imagemagick ====
Если Вы используете imagemagick для генерации превью (thumbnails), то включайте опцию “-strip” для вырезания всех ненужных метаданных из изображений:
convert test.jpg -resize 100x100 -strip test_100.jpg
Особенно хороший эффект дает для фотографий (в которых размер метаданных может достигать десятков килобайтов)
==== Оптимизация JPEG с помощью jpegoptim ====
В Debian системах эта утилита доступна в пакетах:
apt-get install jpegoptim
Для оптимизации файлов нужно указать их в параметрах с опцией “–strip-all”:
jpegoptim --strip-all test.jpg
==== Оптимизация PNG с помощью pngnq ====
В Debian системах эта утилита также доступна в пакетах:
apt-get install pngnq
Работает так (в результате создает новый файл - старый не перезаписывает):
pngnq test.png
===== Опыт =====
На одном из наших проектов простой обработкой картинок (не фотографий) вышеперечисленными инструментами удалось уменьшить общий их размер более чем на 15%. И это при том, что почти все картинки создавались с помощью специальных инструментов с оптимальными настройками. Таким образом процедура оказалась очень полезной, к тому же крайне простой.