Esempio n. 1
0
def test_copy_metadata(metadata_ro):
    m = metadata_ro.metadata
    m.read()
    other = ImageMetadata.from_buffer(EMPTY_JPG_DATA)
    other.read()
    families = ('exif', 'iptc', 'xmp')

    for family in families:
        assert getattr(other, '%s_keys' % family) == []

    m.copy(other)

    for family in ('exif', 'iptc', 'xmp'):
        assert other._keys[family] is None
        assert other._tags[family] == {}
        keys = getattr(m, '%s_keys' % family)
        assert getattr(other._image, '_%sKeys' % family)() == keys
        assert getattr(other, '%s_keys' % family) == keys

    for key in m.exif_keys:
        assert m[key].value == other[key].value

    for key in m.iptc_keys:
        assert m[key].value == other[key].value

    for key in m.xmp_keys:
        assert m[key].value == other[key].value

    assert m.comment == other.comment
Esempio n. 2
0
def test_not_read_raises(metadata_ro, scratch_directory, suite):
    # http://bugs.launchpad.net/pyexiv2/+bug/687373

    locals = {
        'metadata': metadata_ro.metadata,
    }
    if 'other' in suite:
        other = ImageMetadata.from_buffer(EMPTY_JPG_DATA)
        other.read()
        locals['other'] = other

    if 'nonexistent_jpg' in suite:
        # tempfile.mktemp would actually be safe here because we are
        # the only process that can write to the scratch_directory,
        # but then we'd have to suppress warnings.  This can be
        # cleaned up if and when thumb.write_to_file grows the ability
        # to write to a filelike.
        fd, pathname = tempfile.mkstemp(dir=scratch_directory, suffix='.jpg')
        os.close(fd)
        os.remove(pathname)
        locals['nonexistent_jpg'] = pathname

    if 'empty_jpg' in suite:
        with tempfile.NamedTemporaryFile(dir=scratch_directory,
                                         suffix='.jpg',
                                         delete=False) as fp:
            fp.write(EMPTY_JPG_DATA)
            locals['empty_jpg'] = fp.name

    with pytest.raises(OSError):
        exec(suite, {}, locals)
Esempio n. 3
0
def test_from_modified_buffer(smiley):
    m1 = metadata_from_buffer(smiley)
    m1.read()
    key = 'Exif.Image.ImageDescription'
    value = 'my kingdom for a semiquaver'
    m1[key] = value
    m1.write()

    m2 = ImageMetadata.from_buffer(m1.buffer)
    m2.read()
    assert m2[key].value == value
Esempio n. 4
0
    def test_from_modified_buffer(self):
        m1 = self._metadata_from_buffer()
        m1.read()
        key = 'Exif.Image.ImageDescription'
        value = 'my kingdom for a semiquaver'
        m1[key] = value
        m1.write()

        m2 = ImageMetadata.from_buffer(m1.buffer)
        m2.read()
        self.assertEqual(m2[key].value, value)
Esempio n. 5
0
    def test_from_modified_buffer(self):
        m1 = self._metadata_from_buffer()
        m1.read()
        key = "Exif.Image.ImageDescription"
        value = "my kingdom for a semiquaver"
        m1[key] = value
        m1.write()

        m2 = ImageMetadata.from_buffer(m1.buffer)
        m2.read()
        self.assertEqual(m2[key].value, value)
Esempio n. 6
0
def test_mutablemapping():
    clean = ImageMetadata.from_buffer(EMPTY_JPG_DATA)
    clean.read()

    assert len(clean) == 0
    assert 'Exif.Image.DateTimeOriginal' not in clean

    key = 'Exif.Image.DateTimeOriginal'
    correctDate = datetime.datetime(2007, 3, 11)
    incorrectDate = datetime.datetime(2009, 3, 25)
    tag_date = ExifTag(key, correctDate)
    false_tag_date = ExifTag(key, incorrectDate)
    clean[key] = tag_date

    assert len(clean) == 1
    assert 'Exif.Image.DateTimeOriginal' in clean
    assert clean.get('Exif.Image.DateTimeOriginal', false_tag_date) == tag_date
    assert clean.get('Exif.Image.DateTime', tag_date) == tag_date

    key = 'Exif.Photo.UserComment'
    tag = ExifTag(key, 'UserComment')
    clean[key] = tag
    key = 'Iptc.Application2.Caption'
    tag = IptcTag(key, ['Caption'])
    clean[key] = tag
    key = 'Xmp.dc.subject'
    tag = XmpTag(key, ['subject', 'values'])
    clean[key] = tag

    assert 'Exif.Photo.UserComment' in clean
    assert 'Iptc.Application2.Caption' in clean
    assert 'Xmp.dc.subject' in clean

    clean.clear()
    assert len(clean) == 0

    assert 'Exif.Photo.UserComment' not in clean
    assert 'Iptc.Application2.Caption' not in clean
    assert 'Xmp.dc.subject' not in clean
Esempio n. 7
0
 def _metadata_from_buffer(self):
     fd = open(self.filepath, 'rb')
     data = fd.read()
     fd.close()
     return ImageMetadata.from_buffer(data)
Esempio n. 8
0
 def _set_up_other(self):
     self.other = ImageMetadata.from_buffer(EMPTY_JPG_DATA)
Esempio n. 9
0
 def _set_up_clean(self):
     self.clean = ImageMetadata.from_buffer(EMPTY_JPG_DATA)
Esempio n. 10
0
 def _set_up_other(self):
     self.other = ImageMetadata.from_buffer(EMPTY_JPG_DATA)
Esempio n. 11
0
 def _set_up_clean(self):
     self.clean = ImageMetadata.from_buffer(EMPTY_JPG_DATA)
Esempio n. 12
0
def metadata_from_buffer(fi):
    return ImageMetadata.from_buffer(fi.filedata)
Esempio n. 13
0
 def setUp(self):
     self.metadata = ImageMetadata.from_buffer(EMPTY_JPG_DATA)
     self.metadata.read()
Esempio n. 14
0
def load_image(name, md5sum):
    fi = load_data_file(name, md5sum)
    m = ImageMetadata.from_buffer(fi.filedata)
    m.read()
    return m
Esempio n. 15
0
def test_from_original_buffer(smiley):
    m1 = metadata_from_buffer(smiley)
    m2 = ImageMetadata.from_buffer(m1.buffer)
    assert hashlib.md5(m2.buffer).hexdigest() == smiley.md5sum
Esempio n. 16
0
File: xmp.py Progetto: Namejs/workr
 def setUp(self):
     self.metadata = ImageMetadata.from_buffer(EMPTY_JPG_DATA)
     self.metadata.read()
Esempio n. 17
0
 def test_from_original_buffer(self):
     m1 = self._metadata_from_buffer()
     m2 = ImageMetadata.from_buffer(m1.buffer)
     self.assertEqual(hashlib.md5(m2.buffer).hexdigest(), self.md5sum)
Esempio n. 18
0
 def _metadata_from_buffer(self):
     fd = open(self.filepath, "rb")
     data = fd.read()
     fd.close()
     return ImageMetadata.from_buffer(data)
Esempio n. 19
0
 def test_from_original_buffer(self):
     m1 = self._metadata_from_buffer()
     m2 = ImageMetadata.from_buffer(m1.buffer)
     self.assertEqual(hashlib.md5(m2.buffer).hexdigest(), self.md5sum)
Esempio n. 20
0
def metadata():
    m = ImageMetadata.from_buffer(EMPTY_JPG_DATA)
    m.read()
    return m