Add access functions for ImagingEffectNoise with a test

This commit is contained in:
hugovk 2014-09-02 14:11:08 +03:00
parent 8b2e7ee48a
commit 860e67e1c4
3 changed files with 33 additions and 4 deletions

View File

@ -2419,3 +2419,19 @@ def _show(image, **options):
def _showxv(image, title=None, **options):
from PIL import ImageShow
ImageShow.show(image, title, **options)
# --------------------------------------------------------------------
# Effects
def effect_noise(size, sigma):
"""
Generate Gaussian noise centered around 128
:param size: The requested size in pixels, as a 2-tuple:
(width, height).
:param sigma: Standard deviation of noise.
"""
return Image()._new(core.effect_noise(size, sigma))
# End of file

View File

@ -140,6 +140,19 @@ class TestImage(PillowTestCase):
img_colors = sorted(img.getcolors())
self.assertEqual(img_colors, expected_colors)
def test_noise(self):
# Arrange
size = (100, 100)
sigma = 128
# Act
im = Image.effect_noise(size, sigma)
# Assert
self.assertEqual(im.size, (100, 100))
self.assertEqual(im.getpixel((0, 0)), 60)
self.assertEqual(im.getpixel((0, 1)), 28)
if __name__ == '__main__':
unittest.main()

View File

@ -74,7 +74,7 @@ ImagingEffectMandelbrot(int xsize, int ysize, double extent[4], int quality)
Imaging
ImagingEffectNoise(int xsize, int ysize, float sigma)
{
/* Generate gaussian noise centered around 128 */
/* Generate Gaussian noise centered around 128 */
Imaging imOut;
int x, y;
@ -95,7 +95,7 @@ ImagingEffectNoise(int xsize, int ysize, float sigma)
this = next;
nextok = 0;
} else {
/* after numerical recepies */
/* after numerical recipes */
double v1, v2, radius, factor;
do {
v1 = rand()*(2.0/32767.0) - 1.0;