Example #1
0
    def test_sanity(self):
        self.roundtrip(lena())

        self.roundtrip(lena("1"))
        self.roundtrip(lena("L"))
        self.roundtrip(lena("P"))
        self.roundtrip(lena("RGB"))
Example #2
0
    def test_write_rgb(self):
        """
        Can we write a RGB mode file to webp without error.
        Does it have the bits we expect?
        """

        temp_file = self.tempfile("temp.webp")

        lena("RGB").save(temp_file)

        image = Image.open(temp_file)
        image.load()

        self.assertEqual(image.mode, "RGB")
        self.assertEqual(image.size, (128, 128))
        self.assertEqual(image.format, "WEBP")
        image.load()
        image.getdata()

        # If we're using the exact same version of WebP, this test should pass.
        # but it doesn't if the WebP is generated on Ubuntu and tested on
        # Fedora.

        # generated with: dwebp -ppm temp.webp -o lena_webp_write.ppm
        # target = Image.open('Tests/images/lena_webp_write.ppm')
        # self.assert_image_equal(image, target)

        # This test asserts that the images are similar. If the average pixel
        # difference between the two images is less than the epsilon value,
        # then we're going to accept that it's a reasonable lossy version of
        # the image. The included lena images for WebP are showing ~16 on
        # Ubuntu, the jpegs are showing ~18.
        target = lena("RGB")
        self.assert_image_similar(image, target, 20.0)
Example #3
0
    def test_sanity(self):
        self.roundtrip(lena())

        self.roundtrip(lena("1"))
        self.roundtrip(lena("L"))
        self.roundtrip(lena("P"))
        self.roundtrip(lena("RGB"))
Example #4
0
    def test_write_rgb(self):
        """
        Can we write a RGB mode file to webp without error.
        Does it have the bits we expect?
        """

        temp_file = self.tempfile("temp.webp")

        lena("RGB").save(temp_file)

        image = Image.open(temp_file)
        image.load()

        self.assertEqual(image.mode, "RGB")
        self.assertEqual(image.size, (128, 128))
        self.assertEqual(image.format, "WEBP")
        image.load()
        image.getdata()

        # If we're using the exact same version of WebP, this test should pass.
        # but it doesn't if the WebP is generated on Ubuntu and tested on
        # Fedora.

        # generated with: dwebp -ppm temp.webp -o lena_webp_write.ppm
        # target = Image.open('Tests/images/lena_webp_write.ppm')
        # self.assert_image_equal(image, target)

        # This test asserts that the images are similar. If the average pixel
        # difference between the two images is less than the epsilon value,
        # then we're going to accept that it's a reasonable lossy version of
        # the image. The included lena images for WebP are showing ~16 on
        # Ubuntu, the jpegs are showing ~18.
        target = lena("RGB")
        self.assert_image_similar(image, target, 20.0)
Example #5
0
    def test_rgba_p(self):
        im = lena('RGBA')
        im.putalpha(lena('L'))

        converted = im.convert('P')
        comparable = converted.convert('RGBA')

        self.assert_image_similar(im, comparable, 20)
Example #6
0
    def test_sanity(self):

        # FIXME: assert_image
        # Implicit asserts no exception:
        ImageEnhance.Color(lena()).enhance(0.5)
        ImageEnhance.Contrast(lena()).enhance(0.5)
        ImageEnhance.Brightness(lena()).enhance(0.5)
        ImageEnhance.Sharpness(lena()).enhance(0.5)
Example #7
0
    def test_rgba_p(self):
        im = lena('RGBA')
        im.putalpha(lena('L'))

        converted = im.convert('P')
        comparable = converted.convert('RGBA')

        self.assert_image_similar(im, comparable, 20)
Example #8
0
    def test_sanity(self):

        # FIXME: assert_image
        # Implicit asserts no exception:
        ImageEnhance.Color(lena()).enhance(0.5)
        ImageEnhance.Contrast(lena()).enhance(0.5)
        ImageEnhance.Brightness(lena()).enhance(0.5)
        ImageEnhance.Sharpness(lena()).enhance(0.5)
Example #9
0
    def test_sanity(self):
        im = lena()

        im = im.quantize()
        self.assert_image(im, "P", im.size)

        im = lena()
        im = im.quantize(palette=lena("P"))
        self.assert_image(im, "P", im.size)
Example #10
0
    def test_1pxfit(self):
        # Division by zero in equalize if image is 1 pixel high
        newimg = ImageOps.fit(lena("RGB").resize((1, 1)), (35, 35))
        self.assertEqual(newimg.size, (35, 35))

        newimg = ImageOps.fit(lena("RGB").resize((1, 100)), (35, 35))
        self.assertEqual(newimg.size, (35, 35))

        newimg = ImageOps.fit(lena("RGB").resize((100, 1)), (35, 35))
        self.assertEqual(newimg.size, (35, 35))
Example #11
0
    def test_1pxfit(self):
        # Division by zero in equalize if image is 1 pixel high
        newimg = ImageOps.fit(lena("RGB").resize((1, 1)), (35, 35))
        self.assertEqual(newimg.size, (35, 35))

        newimg = ImageOps.fit(lena("RGB").resize((1, 100)), (35, 35))
        self.assertEqual(newimg.size, (35, 35))

        newimg = ImageOps.fit(lena("RGB").resize((100, 1)), (35, 35))
        self.assertEqual(newimg.size, (35, 35))
Example #12
0
    def test_subsampling(self):
        def getsampling(im):
            layer = im.layer
            return layer[0][1:3] + layer[1][1:3] + layer[2][1:3]
        # experimental API
        im = self.roundtrip(lena(), subsampling=-1)  # default
        self.assertEqual(getsampling(im), (2, 2, 1, 1, 1, 1))
        im = self.roundtrip(lena(), subsampling=0)  # 4:4:4
        self.assertEqual(getsampling(im), (1, 1, 1, 1, 1, 1))
        im = self.roundtrip(lena(), subsampling=1)  # 4:2:2
        self.assertEqual(getsampling(im), (2, 1, 1, 1, 1, 1))
        im = self.roundtrip(lena(), subsampling=2)  # 4:1:1
        self.assertEqual(getsampling(im), (2, 2, 1, 1, 1, 1))
        im = self.roundtrip(lena(), subsampling=3)  # default (undefined)
        self.assertEqual(getsampling(im), (2, 2, 1, 1, 1, 1))

        im = self.roundtrip(lena(), subsampling="4:4:4")
        self.assertEqual(getsampling(im), (1, 1, 1, 1, 1, 1))
        im = self.roundtrip(lena(), subsampling="4:2:2")
        self.assertEqual(getsampling(im), (2, 1, 1, 1, 1, 1))
        im = self.roundtrip(lena(), subsampling="4:1:1")
        self.assertEqual(getsampling(im), (2, 2, 1, 1, 1, 1))

        self.assertRaises(
            TypeError, lambda: self.roundtrip(lena(), subsampling="1:1:1"))
Example #13
0
    def test_subsampling(self):
        def getsampling(im):
            layer = im.layer
            return layer[0][1:3] + layer[1][1:3] + layer[2][1:3]
        # experimental API
        im = self.roundtrip(lena(), subsampling=-1)  # default
        self.assertEqual(getsampling(im), (2, 2, 1, 1, 1, 1))
        im = self.roundtrip(lena(), subsampling=0)  # 4:4:4
        self.assertEqual(getsampling(im), (1, 1, 1, 1, 1, 1))
        im = self.roundtrip(lena(), subsampling=1)  # 4:2:2
        self.assertEqual(getsampling(im), (2, 1, 1, 1, 1, 1))
        im = self.roundtrip(lena(), subsampling=2)  # 4:1:1
        self.assertEqual(getsampling(im), (2, 2, 1, 1, 1, 1))
        im = self.roundtrip(lena(), subsampling=3)  # default (undefined)
        self.assertEqual(getsampling(im), (2, 2, 1, 1, 1, 1))

        im = self.roundtrip(lena(), subsampling="4:4:4")
        self.assertEqual(getsampling(im), (1, 1, 1, 1, 1, 1))
        im = self.roundtrip(lena(), subsampling="4:2:2")
        self.assertEqual(getsampling(im), (2, 1, 1, 1, 1, 1))
        im = self.roundtrip(lena(), subsampling="4:1:1")
        self.assertEqual(getsampling(im), (2, 2, 1, 1, 1, 1))

        self.assertRaises(
            TypeError, lambda: self.roundtrip(lena(), subsampling="1:1:1"))
Example #14
0
    def test_sanity(self):

        file = self.tempfile("temp.msp")

        lena("1").save(file)

        im = Image.open(file)
        im.load()
        self.assertEqual(im.mode, "1")
        self.assertEqual(im.size, (128, 128))
        self.assertEqual(im.format, "MSP")
Example #15
0
    def test_lab_roundtrip(self):
        # check to see if we're at least internally consistent.
        pLab = ImageCms.createProfile("LAB")
        t = ImageCms.buildTransform(SRGB, pLab, "RGB", "LAB")

        t2 = ImageCms.buildTransform(pLab, SRGB, "LAB", "RGB")

        i = ImageCms.applyTransform(lena(), t)
        out = ImageCms.applyTransform(i, t2)

        self.assert_image_similar(lena(), out, 2)
Example #16
0
    def test_sanity(self):

        self.assertRaises(ValueError, lambda: lena().tobitmap())
        lena().convert("1").tobitmap()

        im1 = lena().convert("1")

        bitmap = im1.tobitmap()

        self.assertIsInstance(bitmap, bytes)
        self.assert_image_equal(im1, fromstring(bitmap))
Example #17
0
    def test_sanity(self):

        self.assertRaises(ValueError, lambda: lena().tobitmap())
        lena().convert("1").tobitmap()

        im1 = lena().convert("1")

        bitmap = im1.tobitmap()

        self.assertIsInstance(bitmap, bytes)
        self.assert_image_equal(im1, fromstring(bitmap))
Example #18
0
    def test_sanity(self):

        file = self.tempfile("temp.msp")

        lena("1").save(file)

        im = Image.open(file)
        im.load()
        self.assertEqual(im.mode, "1")
        self.assertEqual(im.size, (128, 128))
        self.assertEqual(im.format, "MSP")
Example #19
0
 def test_progressive_compat(self):
     im1 = self.roundtrip(lena())
     im2 = self.roundtrip(lena(), progressive=1)
     im3 = self.roundtrip(lena(), progression=1)  # compatibility
     self.assert_image_equal(im1, im2)
     self.assert_image_equal(im1, im3)
     self.assertFalse(im1.info.get("progressive"))
     self.assertFalse(im1.info.get("progression"))
     self.assertTrue(im2.info.get("progressive"))
     self.assertTrue(im2.info.get("progression"))
     self.assertTrue(im3.info.get("progressive"))
     self.assertTrue(im3.info.get("progression"))
Example #20
0
 def test_progressive_compat(self):
     im1 = self.roundtrip(lena())
     im2 = self.roundtrip(lena(), progressive=1)
     im3 = self.roundtrip(lena(), progression=1)  # compatibility
     self.assert_image_equal(im1, im2)
     self.assert_image_equal(im1, im3)
     self.assertFalse(im1.info.get("progressive"))
     self.assertFalse(im1.info.get("progression"))
     self.assertTrue(im2.info.get("progressive"))
     self.assertTrue(im2.info.get("progression"))
     self.assertTrue(im3.info.get("progressive"))
     self.assertTrue(im3.info.get("progression"))
    def test_write_lossless_rgb(self):
        temp_file = self.tempfile("temp.webp")

        lena("RGB").save(temp_file, lossless=True)

        image = Image.open(temp_file)
        image.load()

        self.assertEqual(image.mode, "RGB")
        self.assertEqual(image.size, (128, 128))
        self.assertEqual(image.format, "WEBP")
        image.load()
        image.getdata()

        self.assert_image_equal(image, lena("RGB"))
Example #22
0
    def test_lab_roundtrip(self):
        # check to see if we're at least internally consistent.
        pLab = ImageCms.createProfile("LAB")
        t = ImageCms.buildTransform(SRGB, pLab, "RGB", "LAB")

        t2 = ImageCms.buildTransform(pLab, SRGB, "LAB", "RGB")

        i = ImageCms.applyTransform(lena(), t)

        self.assertEqual(i.info['icc_profile'],
                         ImageCmsProfile(pLab).tobytes())

        out = ImageCms.applyTransform(i, t2)

        self.assert_image_similar(lena(), out, 2)
Example #23
0
    def test_write_lossless_rgb(self):
        temp_file = self.tempfile("temp.webp")

        lena("RGB").save(temp_file, lossless=True)

        image = Image.open(temp_file)
        image.load()

        self.assertEqual(image.mode, "RGB")
        self.assertEqual(image.size, (128, 128))
        self.assertEqual(image.format, "WEBP")
        image.load()
        image.getdata()

        self.assert_image_equal(image, lena("RGB"))
Example #24
0
 def test_split_merge(self):
     def split_merge(mode):
         return Image.merge(mode, lena(mode).split())
     self.assert_image_equal(lena("1"), split_merge("1"))
     self.assert_image_equal(lena("L"), split_merge("L"))
     self.assert_image_equal(lena("I"), split_merge("I"))
     self.assert_image_equal(lena("F"), split_merge("F"))
     self.assert_image_equal(lena("P"), split_merge("P"))
     self.assert_image_equal(lena("RGB"), split_merge("RGB"))
     self.assert_image_equal(lena("RGBA"), split_merge("RGBA"))
     self.assert_image_equal(lena("CMYK"), split_merge("CMYK"))
     self.assert_image_equal(lena("YCbCr"), split_merge("YCbCr"))
Example #25
0
    def test_sanity(self):

        im1 = lena()
        im2 = Image.new(im1.mode, im1.size, 0)

        for y in range(im1.size[1]):
            for x in range(im1.size[0]):
                pos = x, y
                im2.putpixel(pos, im1.getpixel(pos))

        self.assert_image_equal(im1, im2)

        im2 = Image.new(im1.mode, im1.size, 0)
        im2.readonly = 1

        for y in range(im1.size[1]):
            for x in range(im1.size[0]):
                pos = x, y
                im2.putpixel(pos, im1.getpixel(pos))

        self.assertFalse(im2.readonly)
        self.assert_image_equal(im1, im2)

        im2 = Image.new(im1.mode, im1.size, 0)

        pix1 = im1.load()
        pix2 = im2.load()

        for y in range(im1.size[1]):
            for x in range(im1.size[0]):
                pix2[x, y] = pix1[x, y]

        self.assert_image_equal(im1, im2)
Example #26
0
    def test_pack(self):
        # Pack problems for small tables (@PIL209)

        im = lena().quantize(3).convert("RGB")

        expected = [
            (3236, (227, 183, 147)),
            (6297, (143, 84, 81)),
            (6851, (208, 143, 112))]

        A = im.getcolors(maxcolors=2)
        self.assertEqual(A, None)

        A = im.getcolors(maxcolors=3)
        A.sort()
        self.assertEqual(A, expected)

        A = im.getcolors(maxcolors=4)
        A.sort()
        self.assertEqual(A, expected)

        A = im.getcolors(maxcolors=8)
        A.sort()
        self.assertEqual(A, expected)

        A = im.getcolors(maxcolors=16)
        A.sort()
        self.assertEqual(A, expected)
Example #27
0
 def test_icc(self):
     # Test ICC support
     im1 = Image.open("Tests/images/rgb.jpg")
     icc_profile = im1.info["icc_profile"]
     self.assertEqual(len(icc_profile), 3144)
     # Roundtrip via physical file.
     f = self.tempfile("temp.jpg")
     im1.save(f, icc_profile=icc_profile)
     im2 = Image.open(f)
     self.assertEqual(im2.info.get("icc_profile"), icc_profile)
     # Roundtrip via memory buffer.
     im1 = self.roundtrip(lena())
     im2 = self.roundtrip(lena(), icc_profile=icc_profile)
     self.assert_image_equal(im1, im2)
     self.assertFalse(im1.info.get("icc_profile"))
     self.assertTrue(im2.info.get("icc_profile"))
Example #28
0
    def test_convert(self):
        im = lena('RGB').convert('HSV')
        comparable = self.to_hsv_colorsys(lena('RGB'))

#        print ([ord(x) for x  in im.split()[0].tobytes()[:80]])
#        print ([ord(x) for x  in comparable.split()[0].tobytes()[:80]])

#        print(im.split()[0].histogram())
#        print(comparable.split()[0].histogram())
        
        self.assert_image_similar(im.split()[0], comparable.split()[0],
                                  1, "Hue conversion is wrong")
        self.assert_image_similar(im.split()[1], comparable.split()[1],
                                  1, "Saturation conversion is wrong")
        self.assert_image_similar(im.split()[2], comparable.split()[2],
                                  1, "Value conversion is wrong")
Example #29
0
    def test_roundtrip(self):
        out = self.tempfile('temp.gif')
        im = lena()
        im.save(out)
        reread = Image.open(out)

        self.assert_image_similar(reread.convert('RGB'), im, 50)
Example #30
0
 def palette(mode):
     im = lena(mode).copy()
     im.putpalette(list(range(256))*3)
     p = im.getpalette()
     if p:
         return im.mode, p[:10]
     return im.mode
Example #31
0
 def palette(mode):
     im = lena(mode).copy()
     im.putpalette(list(range(256))*3)
     p = im.getpalette()
     if p:
         return im.mode, p[:10]
     return im.mode
    def test_sanity(self):

        im = lena()

        projection = im.getprojection()

        self.assertEqual(len(projection), 2)
        self.assertEqual(len(projection[0]), im.size[0])
        self.assertEqual(len(projection[1]), im.size[1])

        # 8-bit image
        im = Image.new("L", (10, 10))
        self.assertEqual(im.getprojection()[0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0])
        self.assertEqual(im.getprojection()[1], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0])
        im.paste(255, (2, 4, 8, 6))
        self.assertEqual(im.getprojection()[0], [0, 0, 1, 1, 1, 1, 1, 1, 0, 0])
        self.assertEqual(im.getprojection()[1], [0, 0, 0, 0, 1, 1, 0, 0, 0, 0])

        # 32-bit image
        im = Image.new("RGB", (10, 10))
        self.assertEqual(im.getprojection()[0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0])
        self.assertEqual(im.getprojection()[1], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0])
        im.paste(255, (2, 4, 8, 6))
        self.assertEqual(im.getprojection()[0], [0, 0, 1, 1, 1, 1, 1, 1, 0, 0])
        self.assertEqual(im.getprojection()[1], [0, 0, 0, 0, 1, 1, 0, 0, 0, 0])
Example #33
0
    def test_sanity(self):

        im = lena("L")

        ImageChops.constant(im, 128)
        ImageChops.duplicate(im)
        ImageChops.invert(im)
        ImageChops.lighter(im, im)
        ImageChops.darker(im, im)
        ImageChops.difference(im, im)
        ImageChops.multiply(im, im)
        ImageChops.screen(im, im)

        ImageChops.add(im, im)
        ImageChops.add(im, im, 2.0)
        ImageChops.add(im, im, 2.0, 128)
        ImageChops.subtract(im, im)
        ImageChops.subtract(im, im, 2.0)
        ImageChops.subtract(im, im, 2.0, 128)

        ImageChops.add_modulo(im, im)
        ImageChops.subtract_modulo(im, im)

        ImageChops.blend(im, im, 0.5)
        ImageChops.composite(im, im, im)

        ImageChops.offset(im, 10)
        ImageChops.offset(im, 10, 20)
Example #34
0
    def test_deprecated(self):
        im = lena().copy()

        draw = ImageDraw.Draw(im)

        self.assert_warning(DeprecationWarning, lambda: draw.setink(0))
        self.assert_warning(DeprecationWarning, lambda: draw.setfill(0))
Example #35
0
    def test_pack(self):
        # Pack problems for small tables (@PIL209)

        im = lena().quantize(3).convert("RGB")

        expected = [(3236, (227, 183, 147)), (6297, (143, 84, 81)),
                    (6851, (208, 143, 112))]

        A = im.getcolors(maxcolors=2)
        self.assertEqual(A, None)

        A = im.getcolors(maxcolors=3)
        A.sort()
        self.assertEqual(A, expected)

        A = im.getcolors(maxcolors=4)
        A.sort()
        self.assertEqual(A, expected)

        A = im.getcolors(maxcolors=8)
        A.sort()
        self.assertEqual(A, expected)

        A = im.getcolors(maxcolors=16)
        A.sort()
        self.assertEqual(A, expected)
Example #36
0
    def test_16bit_lut(self):
        """ Tests for 16 bit -> 8 bit lut for converting I->L images
            see https://github.com/python-pillow/Pillow/issues/440
        """

        im = lena("I")
        im.point(list(range(256))*256, 'L')
Example #37
0
    def test_sanity(self):

        im1 = lena()
        im2 = Image.new(im1.mode, im1.size, 0)

        for y in range(im1.size[1]):
            for x in range(im1.size[0]):
                pos = x, y
                im2.putpixel(pos, im1.getpixel(pos))

        self.assert_image_equal(im1, im2)

        im2 = Image.new(im1.mode, im1.size, 0)
        im2.readonly = 1

        for y in range(im1.size[1]):
            for x in range(im1.size[0]):
                pos = x, y
                im2.putpixel(pos, im1.getpixel(pos))

        self.assertFalse(im2.readonly)
        self.assert_image_equal(im1, im2)

        im2 = Image.new(im1.mode, im1.size, 0)

        pix1 = im1.load()
        pix2 = im2.load()

        for y in range(im1.size[1]):
            for x in range(im1.size[0]):
                pix2[x, y] = pix1[x, y]

        self.assert_image_equal(im1, im2)
Example #38
0
    def test_sanity(self):

        im = lena("L")

        ImageChops.constant(im, 128)
        ImageChops.duplicate(im)
        ImageChops.invert(im)
        ImageChops.lighter(im, im)
        ImageChops.darker(im, im)
        ImageChops.difference(im, im)
        ImageChops.multiply(im, im)
        ImageChops.screen(im, im)

        ImageChops.add(im, im)
        ImageChops.add(im, im, 2.0)
        ImageChops.add(im, im, 2.0, 128)
        ImageChops.subtract(im, im)
        ImageChops.subtract(im, im, 2.0)
        ImageChops.subtract(im, im, 2.0, 128)

        ImageChops.add_modulo(im, im)
        ImageChops.subtract_modulo(im, im)

        ImageChops.blend(im, im, 0.5)
        ImageChops.composite(im, im, im)

        ImageChops.offset(im, 10)
        ImageChops.offset(im, 10, 20)
Example #39
0
    def test_cmyk_save(self):
        im = lena('CMYK')
        out = self.tempfile('temp.tif')

        im.save(out, compression='tiff_adobe_deflate')
        im2 = Image.open(out)
        self.assert_image_equal(im, im2)
Example #40
0
    def test_octree_quantize(self):
        im = lena()

        im = im.quantize(100, Image.FASTOCTREE)
        self.assert_image(im, "P", im.size)

        assert len(im.getcolors()) == 100
Example #41
0
    def test_roundtrip(self):
        out = self.tempfile('temp.gif')
        im = lena()
        im.save(out)
        reread = Image.open(out)

        self.assert_image_similar(reread.convert('RGB'), im, 50)
Example #42
0
    def test_sanity(self):

        im = lena()

        pix = im.load()

        self.assertEqual(pix[0, 0], (223, 162, 133))
Example #43
0
    def test_deprecated(self):
        im = lena().copy()

        draw = ImageDraw.Draw(im)

        self.assert_warning(DeprecationWarning, lambda: draw.setink(0))
        self.assert_warning(DeprecationWarning, lambda: draw.setfill(0))
Example #44
0
    def test_sanity(self):

        im = lena()
        im.mode

        from PIL import ImageMode

        ImageMode.getmode("1")
        ImageMode.getmode("L")
        ImageMode.getmode("P")
        ImageMode.getmode("RGB")
        ImageMode.getmode("I")
        ImageMode.getmode("F")

        m = ImageMode.getmode("1")
        self.assertEqual(m.mode, "1")
        self.assertEqual(m.bands, ("1", ))
        self.assertEqual(m.basemode, "L")
        self.assertEqual(m.basetype, "L")

        m = ImageMode.getmode("RGB")
        self.assertEqual(m.mode, "RGB")
        self.assertEqual(m.bands, ("R", "G", "B"))
        self.assertEqual(m.basemode, "RGB")
        self.assertEqual(m.basetype, "L")
Example #45
0
    def test_sanity(self):

        im = lena()

        pix = im.load()

        self.assertEqual(pix[0, 0], (223, 162, 133))
    def test_sanity(self):

        im = lena()

        projection = im.getprojection()

        self.assertEqual(len(projection), 2)
        self.assertEqual(len(projection[0]), im.size[0])
        self.assertEqual(len(projection[1]), im.size[1])

        # 8-bit image
        im = Image.new("L", (10, 10))
        self.assertEqual(im.getprojection()[0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0])
        self.assertEqual(im.getprojection()[1], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0])
        im.paste(255, (2, 4, 8, 6))
        self.assertEqual(im.getprojection()[0], [0, 0, 1, 1, 1, 1, 1, 1, 0, 0])
        self.assertEqual(im.getprojection()[1], [0, 0, 0, 0, 1, 1, 0, 0, 0, 0])

        # 32-bit image
        im = Image.new("RGB", (10, 10))
        self.assertEqual(im.getprojection()[0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0])
        self.assertEqual(im.getprojection()[1], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0])
        im.paste(255, (2, 4, 8, 6))
        self.assertEqual(im.getprojection()[0], [0, 0, 1, 1, 1, 1, 1, 1, 0, 0])
        self.assertEqual(im.getprojection()[1], [0, 0, 0, 0, 1, 1, 0, 0, 0, 0])
Example #47
0
    def test_cmyk_save(self):
        im = lena('CMYK')
        out = self.tempfile('temp.tif')

        im.save(out, compression='tiff_adobe_deflate')
        im2 = Image.open(out)
        self.assert_image_equal(im, im2)
Example #48
0
 def test_icc(self):
     # Test ICC support
     im1 = Image.open("Tests/images/rgb.jpg")
     icc_profile = im1.info["icc_profile"]
     self.assertEqual(len(icc_profile), 3144)
     # Roundtrip via physical file.
     f = self.tempfile("temp.jpg")
     im1.save(f, icc_profile=icc_profile)
     im2 = Image.open(f)
     self.assertEqual(im2.info.get("icc_profile"), icc_profile)
     # Roundtrip via memory buffer.
     im1 = self.roundtrip(lena())
     im2 = self.roundtrip(lena(), icc_profile=icc_profile)
     self.assert_image_equal(im1, im2)
     self.assertFalse(im1.info.get("icc_profile"))
     self.assertTrue(im2.info.get("icc_profile"))
Example #49
0
    def test_sanity(self):

        im = lena()
        im.mode

        from PIL import ImageMode

        ImageMode.getmode("1")
        ImageMode.getmode("L")
        ImageMode.getmode("P")
        ImageMode.getmode("RGB")
        ImageMode.getmode("I")
        ImageMode.getmode("F")

        m = ImageMode.getmode("1")
        self.assertEqual(m.mode, "1")
        self.assertEqual(m.bands, ("1",))
        self.assertEqual(m.basemode, "L")
        self.assertEqual(m.basetype, "L")

        m = ImageMode.getmode("RGB")
        self.assertEqual(m.mode, "RGB")
        self.assertEqual(m.bands, ("R", "G", "B"))
        self.assertEqual(m.basemode, "RGB")
        self.assertEqual(m.basetype, "L")
Example #50
0
    def test_mesh(self):
        # this should be a checkerboard of halfsized lenas in ul, lr
        im = lena("RGBA")
        (w, h) = im.size
        transformed = im.transform(
            im.size,
            Image.MESH,
            [
                ((0, 0, w // 2, h // 2), (0, 0, 0, h, w, h, w, 0)),  # box  # ul -> ccw around quad
                ((w // 2, h // 2, w, h), (0, 0, 0, h, w, h, w, 0)),  # box
            ],  # ul -> ccw around quad
            Image.BILINEAR,
        )

        # transformed.save('transformed.png')

        scaled = im.resize((w // 2, h // 2), Image.BILINEAR)

        checker = Image.new("RGBA", im.size)
        checker.paste(scaled, (0, 0))
        checker.paste(scaled, (w // 2, h // 2))

        self.assert_image_equal(transformed, checker)

        # now, check to see that the extra area is (0, 0, 0, 0)
        blank = Image.new("RGBA", (w // 2, h // 2), (0, 0, 0, 0))

        self.assert_image_equal(blank, transformed.crop((w // 2, 0, w, h // 2)))
        self.assert_image_equal(blank, transformed.crop((0, h // 2, w // 2, h)))
Example #51
0
    def test_split_merge(self):
        def split_merge(mode):
            return Image.merge(mode, lena(mode).split())

        self.assert_image_equal(lena("1"), split_merge("1"))
        self.assert_image_equal(lena("L"), split_merge("L"))
        self.assert_image_equal(lena("I"), split_merge("I"))
        self.assert_image_equal(lena("F"), split_merge("F"))
        self.assert_image_equal(lena("P"), split_merge("P"))
        self.assert_image_equal(lena("RGB"), split_merge("RGB"))
        self.assert_image_equal(lena("RGBA"), split_merge("RGBA"))
        self.assert_image_equal(lena("CMYK"), split_merge("CMYK"))
        self.assert_image_equal(lena("YCbCr"), split_merge("YCbCr"))
Example #52
0
    def test_sanity(self):

        data = lena().getdata()

        len(data)
        list(data)

        self.assertEqual(data[0], (223, 162, 133))
Example #53
0
    def test_mode_i(self):
        src = lena('L')
        data = list(src.getdata())
        im = Image.new('I', src.size, 0)
        im.putdata(data, 2, 256)

        target = [2 * elt + 256 for elt in data]
        self.assertEqual(list(im.getdata()), target)
Example #54
0
 def test(n):
     # The ICC APP marker can store 65519 bytes per marker, so
     # using a 4-byte test code should allow us to detect out of
     # order issues.
     icc_profile = (b"Test"*int(n/4+1))[:n]
     assert len(icc_profile) == n  # sanity
     im1 = self.roundtrip(lena(), icc_profile=icc_profile)
     self.assertEqual(im1.info.get("icc_profile"), icc_profile or None)
Example #55
0
    def test_pil163(self):
        # Division by zero in equalize if < 255 pixels in image (@PIL163)

        i = lena("RGB").resize((15, 16))

        ImageOps.equalize(i.convert("L"))
        ImageOps.equalize(i.convert("P"))
        ImageOps.equalize(i.convert("RGB"))
Example #56
0
    def test_mode_F(self):
        src = lena('L')
        data = list(src.getdata())
        im = Image.new('F', src.size, 0)
        im.putdata(data, 2.0, 256.0)

        target = [2.0 * float(elt) + 256.0 for elt in data]
        self.assertEqual(list(im.getdata()), target)
Example #57
0
    def test_mode_F(self):
        src = lena('L')
        data = list(src.getdata())
        im = Image.new('F', src.size, 0)
        im.putdata(data, 2.0, 256.0)

        target = [2.0* float(elt) + 256.0 for elt in data]
        self.assertEqual(list(im.getdata()), target)
Example #58
0
    def test_sanity(self):
        im = lena()
        type_repr = repr(type(im.getim()))

        if py3:
            self.assertIn("PyCapsule", type_repr)

        self.assertIsInstance(im.im.id, int)