Skip to content

Commit

Permalink
fix issue where it always enlarge when scale_max is used with no othe…
Browse files Browse the repository at this point in the history
…r size value
  • Loading branch information
noogen committed Jul 3, 2019
1 parent 0f2e4ec commit a901c3e
Show file tree
Hide file tree
Showing 2 changed files with 58 additions and 57 deletions.
111 changes: 56 additions & 55 deletions build/src/ngx_http_image_filter_module.c
Original file line number Diff line number Diff line change
Expand Up @@ -936,10 +936,10 @@ ngx_http_image_resize(ngx_http_request_t *r, ngx_http_image_filter_ctx_t *ctx)
{
int sx, sy, dx, dy, ox, oy, ax, ay, size,
colors, palette, transparent, sharpen,
red, green, blue, t,
red, green, blue, t, scale_max,
offset_x, offset_y;
u_char *out;
double scale_max, ratio, ratio_h;
double ratio, ratio_h;
ngx_buf_t *b;
ngx_uint_t resize;
gdImagePtr src, dst;
Expand All @@ -952,10 +952,11 @@ ngx_http_image_resize(ngx_http_request_t *r, ngx_http_image_filter_ctx_t *ctx)
return NULL;
}

sx = gdImageSX(src);
sy = gdImageSY(src);

conf = ngx_http_get_module_loc_conf(r, ngx_http_image_filter_module);
sx = gdImageSX(src);
sy = gdImageSY(src);
conf = ngx_http_get_module_loc_conf(r, ngx_http_image_filter_module);
scale_max = (int) conf->scale_max;
ratio = 1;

if (!ctx->force
&& ctx->angle == 0
Expand Down Expand Up @@ -989,61 +990,61 @@ ngx_http_image_resize(ngx_http_request_t *r, ngx_http_image_filter_ctx_t *ctx)

transparent:

// ngx_log_error(NGX_LOG_ERR, r->connection->log, 0, "FUNC resize started \n");
if ((int)ctx->max_width > 0) {
ratio = ((double) ctx->max_width / (double) sx);
}

// pre-resize if using scale
if (conf->scale_max > 1) {
scale_max = (double) conf->scale_max;
ratio = ((double) ctx->max_width / (double) sx);
ratio_h = ((double) ctx->max_height / (double) sy);
if (ratio_h > ratio) {
ratio = ratio_h;
}
if ((int)ctx->max_height > 0) {
ratio_h = ((double) ctx->max_height / (double) sy);
if (ratio_h > ratio) {
ratio = ratio_h;
}
}

if (ratio > scale_max) {
ratio = scale_max;
// pre-resize if using scale and required a larger image
if (scale_max > 1) {
if (ratio > 1) {
// ngx_log_error(NGX_LOG_ERR, r->connection->log, 0, "scale max = %d, %d \n", scale_max, scale_max);
// ngx_log_error(NGX_LOG_ERR, r->connection->log, 0, "scale ratio = %d, %d \n", ratio, ratio);

if (ratio > (double) scale_max) {
ratio = (double) scale_max;
}

//ngx_log_error(NGX_LOG_ERR, r->connection->log, 0, "scale ratio = %d, %d \n",
// ratio, ratio);
/*
ngx_log_error(NGX_LOG_ERR, r->connection->log, 0, "width max = %d, %d \n", ctx->max_width, ctx->max_width);
ngx_log_error(NGX_LOG_ERR, r->connection->log, 0, "width img = %d, %d \n", sx, sx);
ngx_log_error(NGX_LOG_ERR, r->connection->log, 0, "height max = %d, %d \n", ctx->max_height, ctx->max_height);
ngx_log_error(NGX_LOG_ERR, r->connection->log, 0, "height img = %d, %d \n", sy, sy);
*/

// ngx_log_error(NGX_LOG_ERR, r->connection->log, 0, "scale %d, %d \n", ratio, ratio);
dst = ngx_http_image_new(r, sx * ratio, sy * ratio, palette);

//ngx_log_error(NGX_LOG_ERR, r->connection->log, 0, "scale mw = %d, %d \n",
// ctx->max_width, ctx->max_width);

//ngx_log_error(NGX_LOG_ERR, r->connection->log, 0, "scale mw = %d, %d \n",
// sx, sx);

// if source is smaller, enlarge it
// resize to smaller can be handled later
if (ratio > 1) {
// ngx_log_error(NGX_LOG_ERR, r->connection->log, 0, "scale %d, %d \n", ratio, ratio);
dst = ngx_http_image_new(r, sx * ratio, sy * ratio, palette);

if (dst == NULL) {
gdImageDestroy(src);
return NULL;
}

if (transparent == -1) {
gdImageSaveAlpha(src, 1);
gdImageColorTransparent(src, -1);

if(colors == 0)
{
gdImageAlphaBlending(dst, 0);
gdImageSaveAlpha(dst, 1);
} else {
gdImageTrueColorToPalette(dst, 1, 256);
}
}

my_resize(src, dst);
// set the new original
gdImageDestroy(src);
src = dst;
sx = gdImageSX(src);
sy = gdImageSY(src);
if (dst == NULL) {
gdImageDestroy(src);
return NULL;
}

if (transparent == -1) {
gdImageSaveAlpha(src, 1);
gdImageColorTransparent(src, -1);

if(colors == 0) {
gdImageAlphaBlending(dst, 0);
gdImageSaveAlpha(dst, 1);
} else {
gdImageTrueColorToPalette(dst, 1, 256);
}
}

my_resize(src, dst);
// set the new original
gdImageDestroy(src);
src = dst;
sx = gdImageSX(src);
sy = gdImageSY(src);
}
}

gdImageColorTransparent(src, -1);
Expand Down
4 changes: 2 additions & 2 deletions build/src/ubuntu.sh
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@
export NGINX_BUILD_DIR=/usr/src/nginx/nginx-${NGINX_VERSION}
cd /tmp

apt-get update && apt-get upgrade -y --no-install-recommends --no-install-suggests
apt-get install -y --no-install-recommends --no-install-suggests curl unzip apt-transport-https \
apt-get update
apt-get install -y --no-install-recommends --no-install-suggests curl apt-transport-https \
apt-utils software-properties-common build-essential ca-certificates libssl-dev \
zlib1g-dev dpkg-dev libpcre3 libpcre3-dev libgd-dev gpg-agent

Expand Down

0 comments on commit a901c3e

Please sign in to comment.