def test_write_metadata(self):
        """ Test metadata writing through the python code """
        img = Image.open("Tests/images/hopper.tif")

        f = self.tempfile("temp.tiff")
        img.save(f, tiffinfo=img.tag)

        with Image.open(f) as loaded:

            original = img.tag_v2.named()
            reloaded = loaded.tag_v2.named()

        for k, v in original.items():
            if isinstance(v, IFDRational):
                original[k] = IFDRational(*_limit_rational(v, 2**31))
            elif isinstance(v, tuple) and isinstance(v[0], IFDRational):
                original[k] = tuple(
                    IFDRational(*_limit_rational(elt, 2**31)) for elt in v)

        ignored = [
            "StripByteCounts", "RowsPerStrip", "PageNumber", "StripOffsets"
        ]

        for tag, value in reloaded.items():
            if tag in ignored:
                continue
            if isinstance(original[tag], tuple) and isinstance(
                    original[tag][0], IFDRational):
                # Need to compare element by element in the tuple,
                # not comparing tuples of object references
                self.assert_deep_equal(
                    original[tag],
                    value,
                    "{} didn't roundtrip, {}, {}".format(
                        tag, original[tag], value),
                )
            else:
                self.assertEqual(
                    original[tag],
                    value,
                    "{} didn't roundtrip, {}, {}".format(
                        tag, original[tag], value),
                )

        for tag, value in original.items():
            if tag not in ignored:
                self.assertEqual(value, reloaded[tag],
                                 "%s didn't roundtrip" % tag)
    def test_write_metadata(self):
        """ Test metadata writing through the python code """
        img = Image.open('Tests/images/hopper.tif')

        f = self.tempfile('temp.tiff')
        img.save(f, tiffinfo=img.tag)

        loaded = Image.open(f)

        original = img.tag_v2.named()
        reloaded = loaded.tag_v2.named()

        for k, v in original.items():
            if type(v) == IFDRational:
                original[k] = IFDRational(*_limit_rational(v, 2**31))
            if type(v) == tuple and \
               type(v[0]) == IFDRational:
                original[k] = tuple([IFDRational(
                                     *_limit_rational(elt, 2**31)) for elt in v])

        ignored = ['StripByteCounts', 'RowsPerStrip',
                   'PageNumber', 'StripOffsets']

        for tag, value in reloaded.items():
            if tag in ignored:
                continue
            if (type(original[tag]) == tuple
               and type(original[tag][0]) == IFDRational):
                # Need to compare element by element in the tuple,
                # not comparing tuples of object references
                self.assert_deep_equal(original[tag],
                                       value,
                                       "%s didn't roundtrip, %s, %s" %
                                       (tag, original[tag], value))
            else:
                self.assertEqual(original[tag],
                                 value,
                                 "%s didn't roundtrip, %s, %s" %
                                 (tag, original[tag], value))

        for tag, value in original.items():
            if tag not in ignored:
                self.assertEqual(
                    value, reloaded[tag], "%s didn't roundtrip" % tag)
예제 #3
0
    def test_write_metadata(self):
        """ Test metadata writing through the python code """
        img = Image.open('Tests/images/hopper.tif')

        f = self.tempfile('temp.tiff')
        img.save(f, tiffinfo=img.tag)

        loaded = Image.open(f)

        original = img.tag_v2.named()
        reloaded = loaded.tag_v2.named()

        for k, v in original.items():
            if type(v) == IFDRational:
                original[k] = IFDRational(*_limit_rational(v, 2**31))
            if type(v) == tuple and \
               type(v[0]) == IFDRational:
                original[k] = tuple([IFDRational(
                                     *_limit_rational(elt, 2**31)) for elt in v])

        ignored = ['StripByteCounts', 'RowsPerStrip',
                   'PageNumber', 'StripOffsets']

        for tag, value in reloaded.items():
            if tag in ignored:
                continue
            if (type(original[tag]) == tuple
               and type(original[tag][0]) == IFDRational):
                # Need to compare element by element in the tuple,
                # not comparing tuples of object references
                self.assert_deep_equal(original[tag],
                                       value,
                                       "%s didn't roundtrip, %s, %s" %
                                       (tag, original[tag], value))
            else:
                self.assertEqual(original[tag],
                                 value,
                                 "%s didn't roundtrip, %s, %s" %
                                 (tag, original[tag], value))

        for tag, value in original.items():
            if tag not in ignored:
                self.assertEqual(
                    value, reloaded[tag], "%s didn't roundtrip" % tag)
예제 #4
0
 def test__limit_rational_float(self):
     from PIL.TiffImagePlugin import _limit_rational
     value = 22.3
     ret = _limit_rational(value, 65536)
     self.assertEqual(ret, (223, 10))
예제 #5
0
 def test__limit_rational_int(self):
     from PIL.TiffImagePlugin import _limit_rational
     value = 34
     ret = _limit_rational(value, 65536)
     self.assertEqual(ret, (34, 1))
예제 #6
0
 def test__limit_rational_float(self):
     from PIL.TiffImagePlugin import _limit_rational
     value = 22.3
     ret = _limit_rational(value, 65536)
     self.assertEqual(ret, (223, 10))
예제 #7
0
 def test__limit_rational_int(self):
     from PIL.TiffImagePlugin import _limit_rational
     value = 34
     ret = _limit_rational(value, 65536)
     self.assertEqual(ret, (34, 1))