image_filter crop

Igor Sysoev igor на sysoev.ru
Пт Окт 14 10:57:24 UTC 2011


On Fri, Oct 14, 2011 at 02:18:19AM -0400, ruNovel wrote:
> Доброго дня.
> Возникли следующие вопросы:
> 
> Имеется сервер на Nginx 1.0.8 который
> обрезает и раздает картинки.
> 
> конфиг:
> 
>     location ~ ^/image/(\d+)/(\d+)_(\d+|-)x(\d+|-)(\.(?:jpg|gif|png))$
> {
>     default_type    image/jpeg;
>     alias /var/www/localhost/www/wallpapers/$1/$2$5;
>     image_filter_buffer 256M;
>     image_filter_jpeg_quality 90;
>     image_filter crop $3 $4;
>     expires 1d;
>     error_page 404 /error/404;
>     } 

Это лучше оформить так:

     location /image/ {
         location ~ ^/image/(\d+)/(\d+)_(\d+|-)x(\d+|-)(\.(?:jpg|gif|png))$
             ....
         }
     }

> 1.Как можно средствами самого nginx
> получить оригинальный размер картинки,
> и запретить crop картинки если width и height
> больше чем width и height оригинала картинки?
> Или есть другой вариант для
> ограничения?

Crop не должен делаться, если картинка меньше.

> 2. Что делает директива image_filter size ? С
> помощью нее можно получить  width и height
> картинки?

http://nginx.org/ru/docs/http/ngx_http_image_filter_module.html#image_filter

> 3. Сколько выделить памяти для
> буфера(image_filter_buffer), если обрезаются
> картинки размер которых не больше
> 5000x4000px?

Это зависит от картинки. Ищите в логе ошибки
"image filter: too big response: XXXX".


-- 
Игорь Сысоев
http://sysoev.ru



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