image_filter_jpeg_quality не работает без указания image_filter rotate|resize|crop

mxs kolo kolomaxes at gmail.com
Wed Sep 19 08:39:31 UTC 2012


Hi all

У меня не получилось сделать так, чтобы модуль
ngx_http_image_filter_module просто пережимал jpeg, без вращения его
или ресайза.
Я пробовал на версиях nginx 1.3.6, 1.3.5, 1.2.3
Возможно что я не прав и я просто не понял как правильно сделать
конфиг, вот его кусок:

  location ~* \.(jpg|jpeg)$ {
        image_filter_buffer 10M;
        image_filter_jpeg_quality 75;
        image_filter_sharpen 25;
        root   /var/www/vhosts/some-domain-here.ru/httpdocs/;
   }

Изображение отдаётся без пережатия.
Но если добавить в location строку
       image_filter rotate 180;
то и картинка повернётся и jpg станет меньше по размеру и пошарпится.

 Но насколько я вижу по исходному коду такая функциональность вообще
не предусмотрена без указания image_filter rotate|resize|crop.
Дело в том что  ngx_http_image_body_filter() не будет работать пока не
указан фильтр, а фильтр задаётся только в ngx_http_image_filter() и
там нет случая для "только quality"

В аттаче есть патч которым я решил эту проблему для себя.
Мне пришось добавить новый тип фильтра - quality_only.
Мой конфиг теперь выглядит так:
  location ~* \.(jpg|jpeg)$ {
        image_filter quality_only;
        image_filter_buffer 10M;
        image_filter_jpeg_quality 75;
        image_filter_sharpen 25;
        root   /var/www/vhosts/some-domain-here.ru/httpdocs/;
   }

Я был -бы очень признателен, если-бы кто-то посмотрел патч на предмет ошибок.

b.r.
 Maxim Kozin
-------------- next part --------------
A non-text attachment was scrubbed...
Name: ngx_http_image_filter_module_1_3_6.filter_quality_only.patch
Type: application/octet-stream
Size: 1284 bytes
Desc: not available
URL: <http://mailman.nginx.org/pipermail/nginx-ru/attachments/20120919/df51912d/attachment.obj>


Подробная информация о списке рассылки nginx-ru