Оптимизация картинок для web

Недавно протетстил несколько своих ресурсов на https://developers.google.com/speed/pagespeed. Удивился, что почти все изображения содержат 40-60% избыточной информации, т.е. маркеры EXIF, IPTC, ICC.
Получается удалив эту информацию можно ускорить полную загрузку страницы с картинками на 30%(все медиа на одном сервере nginx)

Утилиты для сжатия и удаления маркеров:

  • ImageMagick: convert, mogrify
  • jpegoptim
  • pngnq

На debian все есть в репозиториях:

[email protected]# apt-get install jpegoptim, pngnq, imagemagick

Небольшой скрипт для оптимизации картинок (png и jpg):

#!/bin/bash
DIR=$1
if [[ -z $DIR ]];
then
    exit -1;
fi;

for file in `find $DIR -type f -name '*.jpg'`
do
    jpegoptim -q --strip-all "$file"
done
for file in `find $DIR -type f -name '*[^n][^q][^8].png'`
do
    newname=${file%'.png'}'-nq8.png'
    pngnq -f "$file"
    mv -f $newname $file
done

Принимает один параметр - имя директории для поиска картинок. Например:

[email protected]# chmod a+x image.opt.sh
[email protected]# ./image.opt.sh /var/www

Примечание: в случае png создаеться временный файл "имяфайла"-nq8.png а потом перемещается обратно в источник
Также можно поставить в cron - и статика всегда будет "чистой".

30 00 * * 0 /usr/bin/image.opt.sh /var/www >/dev/null 2>&1

Комментарии