Fwd: ngx_http_image_filter_module - resize увеличение изображений
An
an07d5 at gmail.com
Wed Oct 29 17:26:11 UTC 2014
---------- Forwarded message ----------
From: An <an07d5 at gmail.com>
Date: 2014-10-29 12:49 GMT+04:00
Subject: ngx_http_image_filter_module - resize увеличение изображений
To: nginx-ru at nginx.org
Очень удобно, если фильтр может увеличивать изображения. Предлагаю внести
следующие изменения.
an at an-pc:~/Desktop$ cat ngx_http_image_filter_module.diff
# HG changeset patch
# User Anton Shefer <an07d5 at gmail.com>
# Date 1414566573 -14400
# Wed Oct 29 11:09:33 2014 +0400
# Node ID a499f7c603f2322950698da88213aa53fb81ad46
# Parent 87ada3ba1392fadaf4d9193b5d345c248be32f77
Image filter resize - Increase images
diff -r 87ada3ba1392 -r a499f7c603f2
src/http/modules/ngx_http_image_filter_module.c
--- a/src/http/modules/ngx_http_image_filter_module.c Mon Oct 27
14:25:56 2014 -0700
+++ b/src/http/modules/ngx_http_image_filter_module.c Wed Oct 29
11:09:33 2014 +0400
@@ -546,7 +546,8 @@
&& ctx->width <= ctx->max_width
&& ctx->height <= ctx->max_height
&& ctx->angle == 0
- && !ctx->force)
+ && !ctx->force
+ && conf->filter != NGX_HTTP_IMAGE_RESIZE)
{
return ngx_http_image_asis(r, ctx);
}
@@ -773,7 +774,8 @@
if (!ctx->force
&& ctx->angle == 0
&& (ngx_uint_t) sx <= ctx->max_width
- && (ngx_uint_t) sy <= ctx->max_height)
+ && (ngx_uint_t) sy <= ctx->max_height
+ && conf->filter != NGX_HTTP_IMAGE_RESIZE)
{
gdImageDestroy(src);
return ngx_http_image_asis(r, ctx);
@@ -809,15 +811,19 @@
if (conf->filter == NGX_HTTP_IMAGE_RESIZE) {
- if ((ngx_uint_t) dx > ctx->max_width) {
+
+ if ((int)ctx->max_width > 0 && (int)ctx->max_height > 0) {
dy = dy * ctx->max_width / dx;
- dy = dy ? dy : 1;
dx = ctx->max_width;
- }
-
- if ((ngx_uint_t) dy > ctx->max_height) {
+ if (dy > (int)ctx->max_height) {
+ dx = dx * ctx->max_height / dy;
+ dy = ctx->max_height;
+ }
+ } else if ((int)ctx->max_width > 0) {
+ dy = dy * ctx->max_width / dx;
+ dx = ctx->max_width;
+ } else if ((int)ctx->max_height > 0) {
dx = dx * ctx->max_height / dy;
- dx = dx ? dx : 1;
dy = ctx->max_height;
}
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.nginx.org/pipermail/nginx-ru/attachments/20141029/42b6c233/attachment-0001.html>
-------------- next part --------------
# HG changeset patch
# User Anton Shefer <an07d5 at gmail.com>
# Date 1414566573 -14400
# Wed Oct 29 11:09:33 2014 +0400
# Node ID a499f7c603f2322950698da88213aa53fb81ad46
# Parent 87ada3ba1392fadaf4d9193b5d345c248be32f77
Image filter resize - Increase images
diff -r 87ada3ba1392 -r a499f7c603f2 src/http/modules/ngx_http_image_filter_module.c
--- a/src/http/modules/ngx_http_image_filter_module.c Mon Oct 27 14:25:56 2014 -0700
+++ b/src/http/modules/ngx_http_image_filter_module.c Wed Oct 29 11:09:33 2014 +0400
@@ -546,7 +546,8 @@
&& ctx->width <= ctx->max_width
&& ctx->height <= ctx->max_height
&& ctx->angle == 0
- && !ctx->force)
+ && !ctx->force
+ && conf->filter != NGX_HTTP_IMAGE_RESIZE)
{
return ngx_http_image_asis(r, ctx);
}
@@ -773,7 +774,8 @@
if (!ctx->force
&& ctx->angle == 0
&& (ngx_uint_t) sx <= ctx->max_width
- && (ngx_uint_t) sy <= ctx->max_height)
+ && (ngx_uint_t) sy <= ctx->max_height
+ && conf->filter != NGX_HTTP_IMAGE_RESIZE)
{
gdImageDestroy(src);
return ngx_http_image_asis(r, ctx);
@@ -809,15 +811,19 @@
if (conf->filter == NGX_HTTP_IMAGE_RESIZE) {
- if ((ngx_uint_t) dx > ctx->max_width) {
+
+ if ((int)ctx->max_width > 0 && (int)ctx->max_height > 0) {
dy = dy * ctx->max_width / dx;
- dy = dy ? dy : 1;
dx = ctx->max_width;
- }
-
- if ((ngx_uint_t) dy > ctx->max_height) {
+ if (dy > (int)ctx->max_height) {
+ dx = dx * ctx->max_height / dy;
+ dy = ctx->max_height;
+ }
+ } else if ((int)ctx->max_width > 0) {
+ dy = dy * ctx->max_width / dx;
+ dx = ctx->max_width;
+ } else if ((int)ctx->max_height > 0) {
dx = dx * ctx->max_height / dy;
- dx = dx ? dx : 1;
dy = ctx->max_height;
}
Подробная информация о списке рассылки nginx-ru