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
|