예제 #1
0
    public static Metadata ParseXmpDirectory(XmpDirectory directory, Metadata metadata)
    {
        var xmpProperties = directory.GetXmpProperties();

        // aux https://www.exiv2.org/tags-xmp-aux.html
        if (xmpProperties.TryGetValue("aux:Lens", out var lensType))
        {
            metadata.Camera.LensModel = lensType;
        }

        if (xmpProperties.TryGetValue("aux:SerialNumber", out var lensSerialNumber))
        {
            metadata.Camera.LensSerialNumber = lensSerialNumber;
        }

        // exifEX https://www.exiv2.org/tags-xmp-exifEX.html
        if (xmpProperties.TryGetValue("exifEX:LensMake", out var lensMakeExifEx))
        {
            metadata.Camera.LensMake = lensMakeExifEx;
        }

        if (xmpProperties.TryGetValue("exifEX:LensModel", out var lensTypeExifEx))
        {
            metadata.Camera.LensModel = lensTypeExifEx;
        }

        if (xmpProperties.TryGetValue("exifEX:LensSerialNumber", out var lensSerialNumberExifEx))
        {
            metadata.Camera.LensSerialNumber = lensSerialNumberExifEx;
        }

        return(metadata);
    }
        public void TestGetXmpProperties()
        {
            var propertyMap = _directory.GetXmpProperties();

            Assert.Equal(179, propertyMap.Count);
            Assert.True(propertyMap.ContainsKey("photoshop:Country"));
            Assert.Equal("Deutschland", propertyMap["photoshop:Country"]);
            Assert.True(propertyMap.ContainsKey("tiff:ImageLength"));
            Assert.Equal("900", propertyMap["tiff:ImageLength"]);
        }