Mercurial > hg > nginx-vendor-current
comparison src/http/modules/ngx_http_image_filter_module.c @ 492:98143f74eb3d NGINX_0_7_58
nginx 0.7.58
*) Feature: a "listen" directive of the mail proxy module supports IPv6.
*) Feature: the "image_filter_jpeg_quality" directive.
*) Feature: the "client_body_in_single_buffer" directive.
*) Feature: the $request_body variable.
*) Bugfix: in ngx_http_autoindex_module in file name links having a ":"
symbol in the name.
*) Bugfix: "make upgrade" procedure did not work; the bug had appeared
in 0.7.53.
Thanks to Denis F. Latypoff.
author | Igor Sysoev <http://sysoev.ru> |
---|---|
date | Mon, 18 May 2009 00:00:00 +0400 |
parents | e66f886a8305 |
children | 499474178a11 |
comparison
equal
deleted
inserted
replaced
491:bb2281a3edb6 | 492:98143f74eb3d |
---|---|
36 | 36 |
37 typedef struct { | 37 typedef struct { |
38 ngx_uint_t filter; | 38 ngx_uint_t filter; |
39 ngx_uint_t width; | 39 ngx_uint_t width; |
40 ngx_uint_t height; | 40 ngx_uint_t height; |
41 ngx_int_t jpeg_quality; | |
41 | 42 |
42 size_t buffer_size; | 43 size_t buffer_size; |
43 } ngx_http_image_filter_conf_t; | 44 } ngx_http_image_filter_conf_t; |
44 | 45 |
45 | 46 |
94 { ngx_string("image_filter"), | 95 { ngx_string("image_filter"), |
95 NGX_HTTP_LOC_CONF|NGX_CONF_TAKE13, | 96 NGX_HTTP_LOC_CONF|NGX_CONF_TAKE13, |
96 ngx_http_image_filter, | 97 ngx_http_image_filter, |
97 NGX_HTTP_LOC_CONF_OFFSET, | 98 NGX_HTTP_LOC_CONF_OFFSET, |
98 0, | 99 0, |
100 NULL }, | |
101 | |
102 { ngx_string("image_filter_jpeg_quality"), | |
103 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1, | |
104 ngx_conf_set_num_slot, | |
105 NGX_HTTP_LOC_CONF_OFFSET, | |
106 offsetof(ngx_http_image_filter_conf_t, jpeg_quality), | |
99 NULL }, | 107 NULL }, |
100 | 108 |
101 { ngx_string("image_filter_buffer"), | 109 { ngx_string("image_filter_buffer"), |
102 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1, | 110 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1, |
103 ngx_conf_set_size_slot, | 111 ngx_conf_set_size_slot, |
884 | 892 |
885 static u_char * | 893 static u_char * |
886 ngx_http_image_out(ngx_http_request_t *r, ngx_uint_t type, gdImagePtr img, | 894 ngx_http_image_out(ngx_http_request_t *r, ngx_uint_t type, gdImagePtr img, |
887 int *size) | 895 int *size) |
888 { | 896 { |
889 char *failed; | 897 char *failed; |
890 u_char *out; | 898 u_char *out; |
899 ngx_http_image_filter_conf_t *conf; | |
891 | 900 |
892 out = NULL; | 901 out = NULL; |
893 | 902 |
894 switch (type) { | 903 switch (type) { |
895 | 904 |
896 case NGX_HTTP_IMAGE_JPEG: | 905 case NGX_HTTP_IMAGE_JPEG: |
897 out = gdImageJpegPtr(img, size, /* default quality */ -1); | 906 conf = ngx_http_get_module_loc_conf(r, ngx_http_image_filter_module); |
907 out = gdImageJpegPtr(img, size, conf->jpeg_quality); | |
898 failed = "gdImageJpegPtr() failed"; | 908 failed = "gdImageJpegPtr() failed"; |
899 break; | 909 break; |
900 | 910 |
901 case NGX_HTTP_IMAGE_GIF: | 911 case NGX_HTTP_IMAGE_GIF: |
902 out = gdImageGifPtr(img, size); | 912 out = gdImageGifPtr(img, size); |
937 if (conf == NULL) { | 947 if (conf == NULL) { |
938 return NGX_CONF_ERROR; | 948 return NGX_CONF_ERROR; |
939 } | 949 } |
940 | 950 |
941 conf->filter = NGX_CONF_UNSET_UINT; | 951 conf->filter = NGX_CONF_UNSET_UINT; |
952 conf->jpeg_quality = NGX_CONF_UNSET; | |
942 conf->buffer_size = NGX_CONF_UNSET_SIZE; | 953 conf->buffer_size = NGX_CONF_UNSET_SIZE; |
943 | 954 |
944 return conf; | 955 return conf; |
945 } | 956 } |
946 | 957 |
961 conf->width = prev->width; | 972 conf->width = prev->width; |
962 conf->height = prev->height; | 973 conf->height = prev->height; |
963 } | 974 } |
964 } | 975 } |
965 | 976 |
977 /* 75 is libjpeg default quality */ | |
978 ngx_conf_merge_value(conf->jpeg_quality, prev->jpeg_quality, 75); | |
979 | |
966 ngx_conf_merge_size_value(conf->buffer_size, prev->buffer_size, | 980 ngx_conf_merge_size_value(conf->buffer_size, prev->buffer_size, |
967 1 * 1024 * 1024); | 981 1 * 1024 * 1024); |
968 | 982 |
969 return NGX_CONF_OK; | 983 return NGX_CONF_OK; |
970 } | 984 } |