ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

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


  • To: nginx-ru@xxxxxxxxx
  • Subject: Re: image_filter_jpeg_quality не работает без указания image_filter rotate|resize|crop
  • From: Валентин Бартенев <ne@xxxxxxxx>
  • Date: Fri, 21 Sep 2012 02:40:39 +0400
  • Dkim-signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=vbart.ru; s=mail; h=Message-Id:Content-Transfer-Encoding:Content-Type:MIME-Version:In-Reply-To:References:Date:Subject:To:From; bh=LowlUl4AuE+gyDNoIGAl6k3lo2bUyBKDxebImelw4hA=; b=dcOYRS5iy5AtM/mmNPTeJJfX29/dH6JFYMoMSC+T/n/S/2zN+KJ36xaWE2MBkvH0b5Huggr3z9qC/0t7W8kscHr4rHkjbK5ywpFSxIZHfzoQKftCGIa+ERBq0u0Wysur9sShOQONgyBf3FYaYKcEOSnZ3/i5G9RV1aThTS3CFR/mjGruOpaYKeqS8/tKruyLKAkvr8r9PNbBf/AoZtZP3qYmp/Y+yp8eApUN3w7qmc4sJhrFfBOUbUfRr0n4HkrRh2Qdx5/4V+7lEp8/y1CQ4wrwi5y4zXMZSsV+7iLbxk1Bl36uuv1FSTA+HJCAvqeBOo2NWSF1/pE14wXsaSsbKA==;
  • In-reply-to: <CAKgMhimVmz-3M=hw=X+PzDjfc41Y9taezfmSRvoakGVPbU9+Zw@mail.gmail.com>
  • References: <CAKgMhimVmz-3M=hw=X+PzDjfc41Y9taezfmSRvoakGVPbU9+Zw@mail.gmail.com>

On Wednesday 19 September 2012 12:39:31 mxs kolo wrote:
[...]
> В аттаче есть патч которым я решил эту проблему для себя.
> Мне пришось добавить новый тип фильтра - 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/;
>    }

quality_only не очень подходящее название для опции image_filter.

 1. crop | resize | test - глаголы, означающие действие, производимое над
    изображением, а quality_only - нет.

 2. Судя по тому, что делает патч, текущее название просто не соответствует
    действительности: к изображению применяется резкость и убирается
    прозрачность, если заданы соответствующие директивы. Директива же
    image_filter_jpeg_quality работает только для изображений в формате
    jpeg, при этом патч не накладывает никаких ограничений на обработку
    png и gif.

Я предлагаю поменять название на более общее, например, "convert" будет неплохо.

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

На будущее, просьба делать diff с опцией -p, так он будет лучше читаться.


> --- nginx-1.3.6/src/http/modules/ngx_http_image_filter_module.c 2012-04-21
> 23:02:21.000000000 +0400 +++
> nginx-1.3.6.PATCHED/src/http/modules/ngx_http_image_filter_module.c
> 2012-09-19 12:32:16.000000000 +0400 @@ -18,6 +18,7 @@
> 
>  #define NGX_HTTP_IMAGE_RESIZE    3
>  #define NGX_HTTP_IMAGE_CROP      4
>  #define NGX_HTTP_IMAGE_ROTATE    5
> 
> +#define NGX_HTTP_IMAGE_QUALITY   6
> 
>  #define NGX_HTTP_IMAGE_START     0
> 
> @@ -507,6 +508,10 @@
> 
>          return ngx_http_image_json(r, rc == NGX_OK ? ctx : NULL);
>      
>      }
> 
> +    if (conf->filter == NGX_HTTP_IMAGE_QUALITY) {
> +      return ngx_http_image_resize(r, ctx);
> +    }
> +

Style. Множество лишних пробелов в конце строк.

>      ctx->angle = ngx_http_image_filter_get_value(r, conf->acv, conf->angle);
>      
>      if (conf->filter == NGX_HTTP_IMAGE_ROTATE) {
> 
> @@ -813,6 +818,10 @@
> 
>          resize = 0;
> 
> +    } else if (conf->filter == NGX_HTTP_IMAGE_QUALITY) {
> +
> +        resize = 0;
> +
>      } else { /* NGX_HTTP_IMAGE_CROP */
>      
>          resize = 0;

Та же проблема с пробелами в пустых строках и на конце.

Лучше вынести resize = 0; выше, за пределы всей конструкции из if - else.
Должно получиться как-то так:

  resize = 0;

  if (conf->filter == NGX_HTTP_IMAGE_RESIZE) {

      ...

  } else if (conf->filter == NGX_HTTP_IMAGE_CROP) {

      ...

  }

--
Валентин Бартенев
_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://mailman.nginx.org/mailman/listinfo/nginx-ru


 




Copyright © Lexa Software, 1996-2009.