]> granicus.if.org Git - php/commit
Implemented the gdScatter filter I wrote almost 10 years ago
authorKalle Sommer Nielsen <kalle@php.net>
Thu, 9 May 2019 23:23:40 +0000 (02:23 +0300)
committerKalle Sommer Nielsen <kalle@php.net>
Thu, 9 May 2019 23:23:40 +0000 (02:23 +0300)
commitbcd11a1dfbb520c6663d7737cf7e0fec93eb2d8a
treebe7042419c1fea2102fee2c4f072ce88e5675074
parentec518aef10abb26db9c50dc9c4912386cbe94989
Implemented the gdScatter filter I wrote almost 10 years ago

This filter is available as of libgd 2.1.0 which is our bare minimum for
external compilation of ext/gd.

The scatter filter works by iterating over all pixels in the image and
shifting them randomly based on two modifier (`plus` and `sub`) values:

dest_x = (int)(x + ((rand() % (plus - sub)) + sub));
dest_y = (int)(y + ((rand() % (plus - sub)) + sub));

Additionally the scatter filter also supports by only shifting pixels where
the current pixel being iterated is one or more colors, allowing the scatter
filter to only effect solid colors in part of an image.

Note, due to the nature of randomness and implementation, pixels who were
shifted ahead of iteration will be shifted once more and therefore the
bottom right of an image may contain a slight scatter effect due to this.
ext/gd/gd.c
ext/gd/libgd/gd.h
ext/gd/libgd/gd_filter.c
ext/gd/tests/imagefilter.phpt