Welcome! Log In Create A New Profile

Advanced

Re: Резкость в модуле image filter

August 23, 2011 08:46AM
On Tue, Aug 23, 2011 at 01:08:39PM +0200, Anton Kuznetsov wrote:
> Попробовал сегодня воспользоваться image_filter для преобразования
> изображений, результат разочаровал. Фильтр сильно портит резкость и это
> никак не связано с параметром image_filter_jpeg_quality. Это не страшно и
> не очень заметно для некоторых изображений, но для качественных
> профессиональных фото или для скриншотов HD-видео очень заметно!
>
> В GD уже давно есть функция gdImageSharpen:
>
> http://www.boutell.com/gd/manual2.0.33.html#gdImageSharpen
> https://bitbucket.org/pierrejoye/gd-libgd/src/733361a31aab/src/gdfx.c
>
> Возможно ли ее внедрить в модуль? Может это уложится в небольшой быстрый
> патч?
>
> P.S. Пример из реализации на php, оно того стоит!
> http://adamhopkinson.co.uk/blog/wordpress/wp-content/uploads/2010/08/otter.jpg

Прилагаемый патч добавляет директиву
image_filter_sharpen число;
которая применяет функцию gdImageSharpen() к конечной картинке.
По умолчанию 0, который ничего не делает (что вообще-то не совпадает
с интерфейсом gdImageSharpen()).

Просьба сообщить о результатах.


--
Игорь Сысоев
http://sysoev.ru
Index: src/http/modules/ngx_http_image_filter_module.c
===================================================================
--- src/http/modules/ngx_http_image_filter_module.c (revision 4027)
+++ src/http/modules/ngx_http_image_filter_module.c (working copy)
@@ -41,6 +41,7 @@
ngx_uint_t height;
ngx_uint_t angle;
ngx_uint_t jpeg_quality;
+ ngx_uint_t sharpen;

ngx_flag_t transparency;

@@ -124,6 +125,13 @@
0,
NULL },

+ { ngx_string("image_filter_sharpen"),
+ NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
+ ngx_http_image_filter_sharpen,
+ NGX_HTTP_LOC_CONF_OFFSET,
+ 0,
+ NULL },
+
{ ngx_string("image_filter_transparency"),
NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_FLAG,
ngx_conf_set_flag_slot,
@@ -948,6 +956,10 @@
gdImageColorTransparent(dst, gdImageColorExact(dst, red, green, blue));
}

+ if (conf->sharpen) {
+ gdImageSharpen(dst, conf->sharpen);
+ }
+
out = ngx_http_image_out(r, ctx->type, dst, &size);

ngx_log_debug3(NGX_LOG_DEBUG_HTTP, r->connection->log, 0,
@@ -1156,6 +1168,7 @@

conf->filter = NGX_CONF_UNSET_UINT;
conf->jpeg_quality = NGX_CONF_UNSET_UINT;
+ conf->sharpen = NGX_CONF_UNSET_UINT;
conf->angle = NGX_CONF_UNSET_UINT;
conf->transparency = NGX_CONF_UNSET;
conf->buffer_size = NGX_CONF_UNSET_SIZE;
@@ -1187,6 +1200,8 @@
/* 75 is libjpeg default quality */
ngx_conf_merge_uint_value(conf->jpeg_quality, prev->jpeg_quality, 75);

+ ngx_conf_merge_uint_value(conf->sharpen, prev->sharpen, 0);
+
if (conf->jqcv == NULL) {
conf->jqcv = prev->jqcv;
}
_______________________________________________
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru
Subject Author Posted

Резкость в модуле image filter

Anton Kuznetsov August 23, 2011 07:10AM

Re: Резкость в модуле image filter

Igor Sysoev August 23, 2011 08:46AM

Re: Резкость в модуле image filter

Anton Kuznetsov August 23, 2011 09:06AM

Re: Резкость в модуле image filter

Igor Sysoev August 23, 2011 09:20AM

Re: Резкость в модуле image filter

Anton Kuznetsov August 23, 2011 12:04PM

Re: Резкость в модуле image filter

Igor Sysoev August 23, 2011 02:22PM

Re: Резкость в модуле image filter

Anton Kuznetsov August 23, 2011 07:10PM

Re: Резкость в модуле image filter

darmen October 27, 2011 05:32AM

Re: Резкость в модуле image filter

Oleksandr V. Typlyns'kyi October 27, 2011 06:52AM

Re: Резкость в модуле image filter

Anton Kuznetsov October 29, 2011 10:18PM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 275
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready