Welcome! Log In Create A New Profile

Advanced

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

September 20, 2012 06:42PM
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@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru
Subject Author Posted

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

mxs kolo September 19, 2012 04:40AM

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

VBart September 20, 2012 06:42PM

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

mxs kolo October 01, 2012 12:06PM

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

VBart October 07, 2012 08:42AM

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

Михаил Монашёв October 07, 2012 09:08AM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 183
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready