From 8c96d38ce96514e08679fd7fa4cc0957ee9802d9 Mon Sep 17 00:00:00 2001 From: hugovk Date: Tue, 2 Sep 2014 15:14:00 +0300 Subject: [PATCH] Add access functions for ImagingEffectMandelbrot with a test --- PIL/Image.py | 14 ++++++++++++- Tests/images/mandelbrot.png | Bin 0 -> 13479 bytes Tests/test_image.py | 15 +++++++++++++- libImaging/Effects.c | 38 ++++++++++++++++++------------------ 4 files changed, 46 insertions(+), 21 deletions(-) create mode 100644 Tests/images/mandelbrot.png diff --git a/PIL/Image.py b/PIL/Image.py index 605595912..4c9a77e79 100644 --- a/PIL/Image.py +++ b/PIL/Image.py @@ -2424,9 +2424,21 @@ def _showxv(image, title=None, **options): # -------------------------------------------------------------------- # Effects +def effect_mandelbrot(size, extent, quality): + """ + Generate a Mandelbrot set covering the given extent. + + :param size: The requested size in pixels, as a 2-tuple: + (width, height). + :param extent: The extent to cover, as a 4-tuple: + (x0, y0, x1, y2). + :param quality: Quality. + """ + return Image()._new(core.effect_mandelbrot(size, extent, quality)) + def effect_noise(size, sigma): """ - Generate Gaussian noise centered around 128 + Generate Gaussian noise centered around 128. :param size: The requested size in pixels, as a 2-tuple: (width, height). diff --git a/Tests/images/mandelbrot.png b/Tests/images/mandelbrot.png new file mode 100644 index 0000000000000000000000000000000000000000..d8167e721c8dd1e68bc7832ecda91c642ee01af4 GIT binary patch literal 13479 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 bBJHQ54g)dRimage8[y]; - for (x = 0; x < xsize; x++) { - x1 = y1 = xi2 = yi2 = 0.0; - cr = x*dr + extent[0]; - ci = y*di + extent[1]; - for (k = 1;; k++) { - y1 = 2*x1*y1 + ci; - x1 = xi2 - yi2 + cr; - xi2 = x1*x1; - yi2 = y1*y1; - if ((xi2 + yi2) > radius) { - buf[x] = k*255/quality; - break; - } - if (k > quality) { - buf[x] = 0; - break; - } - } - } + for (x = 0; x < xsize; x++) { + x1 = y1 = xi2 = yi2 = 0.0; + cr = x*dr + extent[0]; + ci = y*di + extent[1]; + for (k = 1;; k++) { + y1 = 2*x1*y1 + ci; + x1 = xi2 - yi2 + cr; + xi2 = x1*x1; + yi2 = y1*y1; + if ((xi2 + yi2) > radius) { + buf[x] = k*255/quality; + break; + } + if (k > quality) { + buf[x] = 0; + break; + } + } + } } return im; }