Mercurial > hg > nginx-quic
changeset 3117:e2a510ac53db
fix transparency in GIF
author | Igor Sysoev <igor@sysoev.ru> |
---|---|
date | Sat, 12 Sep 2009 09:46:28 +0000 |
parents | 98e288c6dac3 |
children | 6f79fac538b9 |
files | src/http/modules/ngx_http_image_filter_module.c |
diffstat | 1 files changed, 14 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/src/http/modules/ngx_http_image_filter_module.c +++ b/src/http/modules/ngx_http_image_filter_module.c @@ -679,7 +679,7 @@ static ngx_buf_t * ngx_http_image_resize(ngx_http_request_t *r, ngx_http_image_filter_ctx_t *ctx) { int sx, sy, dx, dy, ox, oy, - colors, transparent, size; + colors, transparent, red, green, blue, size; u_char *out; ngx_buf_t *b; ngx_uint_t resize; @@ -708,6 +708,16 @@ ngx_http_image_resize(ngx_http_request_t colors = gdImageColorsTotal(src); transparent = gdImageGetTransparent(src); + if (transparent != -1 && colors) { + red = gdImageRed(src, transparent); + green = gdImageGreen(src, transparent); + blue = gdImageBlue(src, transparent); + gdImageColorTransparent(src, -1); + + } else { + red = 0; green = 0; blue = 0; + } + dx = sx; dy = sy; @@ -806,7 +816,9 @@ ngx_http_image_resize(ngx_http_request_t } } - gdImageColorTransparent(dst, transparent); + if (transparent != -1 && colors) { + gdImageColorTransparent(dst, gdImageColorExact(dst, red, green, blue)); + } out = ngx_http_image_out(r, ctx->type, dst, &size);