Модуль ngx_http_image_filter_module

Пример конфигурации
Директивы
     image_filter
     image_filter_buffer
     image_filter_interlace
     image_filter_jpeg_quality
     image_filter_sharpen
     image_filter_transparency
     image_filter_webp_quality

Модуль ngx_http_image_filter_module (0.7.54+) — это фильтр для преобразования изображений в форматах JPEG, GIF, PNG и WebP.

По умолчанию этот модуль не собирается, его сборку необходимо разрешить с помощью конфигурационного параметра --with-http_image_filter_module.

Для сборки и работы этого модуля необходима библиотека libgd. Рекомендуется использовать самую последнюю версию библиотеки.

Поддержка формата WebP появилась в версии 1.11.6. Для преобразования изображений в данном формате библиотека libgd должна быть собрана с поддержкой WebP.

Пример конфигурации

location /img/ {
    proxy_pass   http://backend;
    image_filter resize 150 100;
    image_filter rotate 90;
    error_page   415 = /empty;
}

location = /empty {
    empty_gif;
}

Директивы

Синтаксис: image_filter off;
image_filter test;
image_filter size;
image_filter rotate 90 | 180 | 270;
image_filter resize ширина высота;
image_filter crop ширина высота;
Умолчание:
image_filter off;
Контекст: location

Задаёт тип преобразования изображения:

off
отключает обработку данным модулем во вложенном location.
test
проверяет, что ответ действительно является изображением в формате JPEG, GIF, PNG или WebP. В противном случае возвращается ошибка 415 (Unsupported Media Type).
size
выдаёт информацию об изображении в формате JSON, например:
{ "img" : { "width": 100, "height": 100, "type": "gif" } }
В случае ошибки выдаётся
{}
rotate 90|180|270
поворачивает изображение против часовой стрелки на указанное число градусов. В значении параметра допустимо использование переменных. Можно использовать как отдельно, так и совместно с преобразованиями resize и crop.
resize ширина высота
пропорционально уменьшает изображение до указанных размеров. Если требуется уменьшить только по одному измерению, то в качестве второго можно указать “-”. В случае ошибки сервер возвращает код 415 (Unsupported Media Type). В значениях параметров допустимо использование переменных. При использовании совместно с rotate, поворот изображения происходит после уменьшения размеров изображения.
crop ширина высота
пропорционально уменьшает изображение до размера большей стороны и обрезает лишние края по другой стороне. Если требуется уменьшить только по одному измерению, то в качестве второго можно указать “-”. В случае ошибки сервер возвращает код 415 (Unsupported Media Type). В значениях параметров допустимо использование переменных. При использовании совместно с rotate, поворот изображения происходит до уменьшения размеров изображения.

Синтаксис: image_filter_buffer размер;
Умолчание:
image_filter_buffer 1M;
Контекст: http, server, location

Задаёт максимальный размер буфера для чтения изображения. При превышении размера сервер вернёт ошибку 415 (Unsupported Media Type).

Синтаксис: image_filter_interlace on | off;
Умолчание:
image_filter_interlace off;
Контекст: http, server, location

Эта директива появилась в версии 1.3.15.

Если включено, то итоговые изображения будут с чересстрочностью. В случае JPEG итоговые изображения будут в формате “progressive JPEG”.

Синтаксис: image_filter_jpeg_quality качество;
Умолчание:
image_filter_jpeg_quality 75;
Контекст: http, server, location

Задаёт желаемое качество преобразованного изображения в формате JPEG. Допустимые значения находятся в диапазоне от 1 до 100. Меньшим значениям обычно соответствует худшее качество изображения и меньший объём передаваемых данных. Максимальное рекомендуемое значение — 95. В значении параметра допустимо использование переменных.

Синтаксис: image_filter_sharpen процент;
Умолчание:
image_filter_sharpen 0;
Контекст: http, server, location

Повышает резкость итогового изображения. Процент резкости может быть больше 100. Значение 0 отключает повышение резкости. В значении параметра допустимо использование переменных.

Синтаксис: image_filter_transparency on|off;
Умолчание:
image_filter_transparency on;
Контекст: http, server, location

Определяет, сохранять ли прозрачность при обработке изображений в формате GIF и в формате PNG с цветами, заданными палитрой. Потеря прозрачности позволяет получить более качественное изображение. Прозрачность альфа-канала в формате PNG сохраняется всегда.

Синтаксис: image_filter_webp_quality качество;
Умолчание:
image_filter_webp_quality 80;
Контекст: http, server, location

Эта директива появилась в версии 1.11.6.

Задаёт желаемое качество преобразованного изображения в формате WebP. Допустимые значения находятся в диапазоне от 1 до 100. Меньшим значениям обычно соответствует худшее качество изображения и меньший объём передаваемых данных. В значении параметра допустимо использование переменных.