protected override void CreateDirectory()
        {
            if (Directories == null)
            {
                return;
            }

            if (exifDir == null)
            {
                exifDir = Directories.OfType <ExifDirectoryBase>().FirstOrDefault();
            }

            if (exifSubIfdDir == null)
            {
                exifSubIfdDir = Directories.OfType <ExifSubIfdDirectory>().FirstOrDefault();
            }
        }
예제 #2
0
    public static Metadata ParseExifDirectory(ExifDirectoryBase directory, Metadata metadata)
    {
        // https://www.exiv2.org/tags.html
        if (directory.ContainsTag(ExifDirectoryBase.TagSubfileType))
        {
            metadata.Image.SubfileType = directory.GetDescription(ExifDirectoryBase.TagSubfileType);
        }

        if (directory.ContainsTag(ExifDirectoryBase.TagNewSubfileType))
        {
            metadata.Image.SubfileType = directory.GetDescription(ExifDirectoryBase.TagNewSubfileType);
        }

        if (directory.ContainsTag(ExifDirectoryBase.TagOrientation))
        {
            metadata.Image.Orientation = directory.GetDescription(ExifDirectoryBase.TagOrientation);
        }

        if (directory.ContainsTag(ExifDirectoryBase.TagXResolution))
        {
            metadata.Image.XResolution = directory.GetDescription(ExifDirectoryBase.TagXResolution);
        }

        if (directory.ContainsTag(ExifDirectoryBase.TagYResolution))
        {
            metadata.Image.YResolution = directory.GetDescription(ExifDirectoryBase.TagYResolution);
        }

        if (directory.TryGetDateTime(ExifDirectoryBase.TagDateTime, out var dateTime))
        {
            metadata.Image.DateTime = dateTime;
        }

        if (directory.ContainsTag(ExifDirectoryBase.TagColorSpace))
        {
            metadata.Image.ColorSpace = directory.GetDescription(ExifDirectoryBase.TagColorSpace);
        }

        if (directory.ContainsTag(ExifDirectoryBase.TagUserComment))
        {
            metadata.Image.UserComment = directory.GetDescription(ExifDirectoryBase.TagUserComment);
        }

        if (directory.ContainsTag(ExifDirectoryBase.TagExifVersion))
        {
            metadata.Image.ExifVersion = directory.GetDescription(ExifDirectoryBase.TagExifVersion);
        }

        if (directory.TryGetInt32(ExifDirectoryBase.TagPageNumber, out var pageNumber))
        {
            metadata.Image.PageNumber = pageNumber;
        }

        if (directory.ContainsTag(ExifDirectoryBase.TagMake))
        {
            metadata.Camera.Make = directory.GetDescription(ExifDirectoryBase.TagMake);
        }

        if (directory.ContainsTag(ExifDirectoryBase.TagModel))
        {
            metadata.Camera.Model = directory.GetDescription(ExifDirectoryBase.TagModel);
        }

        if (directory.ContainsTag(ExifDirectoryBase.TagExposureTime))
        {
            metadata.Camera.ExposureTime = directory.GetDescription(ExifDirectoryBase.TagExposureTime);
        }

        if (directory.ContainsTag(ExifDirectoryBase.TagFNumber))
        {
            metadata.Camera.FNumber = directory.GetDescription(ExifDirectoryBase.TagFNumber);
        }

        if (directory.ContainsTag(ExifDirectoryBase.TagExposureProgram))
        {
            metadata.Camera.ExposureProgram = directory.GetDescription(ExifDirectoryBase.TagExposureProgram);
        }

        if (directory.ContainsTag(ExifDirectoryBase.TagShutterSpeed))
        {
            metadata.Camera.ShutterSpeed = directory.GetDescription(ExifDirectoryBase.TagShutterSpeed);
        }

        if (directory.ContainsTag(ExifDirectoryBase.TagIsoEquivalent))
        {
            metadata.Camera.IsoSpeed = directory.GetDescription(ExifDirectoryBase.TagIsoEquivalent);
        }

        if (directory.ContainsTag(ExifDirectoryBase.TagAperture))
        {
            metadata.Camera.Aperture = directory.GetDescription(ExifDirectoryBase.TagAperture);
        }

        if (directory.ContainsTag(ExifDirectoryBase.TagExposureBias))
        {
            metadata.Camera.ExposureBias = directory.GetDescription(ExifDirectoryBase.TagExposureBias);
        }

        if (directory.ContainsTag(ExifDirectoryBase.TagMeteringMode))
        {
            metadata.Camera.MeteringMode = directory.GetDescription(ExifDirectoryBase.TagMeteringMode);
        }

        if (directory.ContainsTag(ExifDirectoryBase.TagFlash))
        {
            metadata.Camera.Flash = directory.GetDescription(ExifDirectoryBase.TagFlash);
        }

        if (directory.ContainsTag(ExifDirectoryBase.TagFocalLength))
        {
            metadata.Camera.FocalLength = directory.GetDescription(ExifDirectoryBase.TagFocalLength);
        }

        if (directory.TryGetDateTime(ExifDirectoryBase.TagDateTimeOriginal, out var originalDateTime))
        {
            metadata.Camera.DateTimeOriginal = originalDateTime;
        }

        if (directory.TryGetDateTime(ExifDirectoryBase.TagDateTimeDigitized, out var digitizedDateTime))
        {
            metadata.Camera.DateTimeDigitized = digitizedDateTime;
        }

        if (directory.ContainsTag(ExifDirectoryBase.TagExposureMode))
        {
            metadata.Camera.ExposureMode = directory.GetDescription(ExifDirectoryBase.TagExposureMode);
        }

        if (directory.ContainsTag(ExifDirectoryBase.TagWhiteBalance))
        {
            metadata.Camera.WhiteBalance = directory.GetDescription(ExifDirectoryBase.TagWhiteBalance);
        }

        if (directory.ContainsTag(ExifDirectoryBase.TagWhiteBalanceMode))
        {
            metadata.Camera.WhiteBalanceMode = directory.GetDescription(ExifDirectoryBase.TagWhiteBalanceMode);
        }

        if (directory.ContainsTag(ExifDirectoryBase.TagSceneCaptureType))
        {
            metadata.Camera.SceneCaptureType = directory.GetDescription(ExifDirectoryBase.TagSceneCaptureType);
        }

        if (directory.ContainsTag(ExifDirectoryBase.TagLensMake))
        {
            metadata.Camera.LensMake = directory.GetDescription(ExifDirectoryBase.TagLensMake);
        }

        if (directory.ContainsTag(ExifDirectoryBase.TagLensModel))
        {
            metadata.Camera.LensModel = directory.GetDescription(ExifDirectoryBase.TagLensModel);
        }

        if (directory.ContainsTag(ExifDirectoryBase.TagYCbCrPositioning))
        {
            metadata.Image.YCbCrPositioning = directory.GetDescription(ExifDirectoryBase.TagYCbCrPositioning);
        }

        if (directory.ContainsTag(ExifDirectoryBase.TagComponentsConfiguration))
        {
            metadata.Image.ComponentsConfiguration =
                directory.GetDescription(ExifDirectoryBase.TagComponentsConfiguration);
        }

        if (directory.ContainsTag(ExifDirectoryBase.TagFocalPlaneXResolution))
        {
            metadata.Camera.FocalPlaneXResolution =
                directory.GetDescription(ExifDirectoryBase.TagFocalPlaneXResolution);
        }

        if (directory.ContainsTag(ExifDirectoryBase.TagFocalPlaneYResolution))
        {
            metadata.Camera.FocalPlaneYResolution =
                directory.GetDescription(ExifDirectoryBase.TagFocalPlaneYResolution);
        }

        if (directory.ContainsTag(ExifDirectoryBase.TagCustomRendered))
        {
            metadata.Camera.CustomRendered = directory.GetDescription(ExifDirectoryBase.TagCustomRendered);
        }

        if (directory.ContainsTag(ExifDirectoryBase.TagLensSerialNumber))
        {
            metadata.Camera.LensSerialNumber = directory.GetDescription(ExifDirectoryBase.TagLensSerialNumber);
        }

        if (directory.ContainsTag(ExifDirectoryBase.TagLensSpecification))
        {
            metadata.Camera.LensSpecification = directory.GetDescription(ExifDirectoryBase.TagLensSpecification);
        }

        if (directory.ContainsTag(ExifDirectoryBase.TagInteropIndex))
        {
            metadata.Interoperability.InteroperabilityIndex =
                directory.GetDescription(ExifDirectoryBase.TagInteropIndex);
        }

        if (directory.ContainsTag(ExifDirectoryBase.TagInteropVersion))
        {
            metadata.Interoperability.InteroperabilityVersion =
                directory.GetDescription(ExifDirectoryBase.TagInteropVersion);
        }

        return(metadata);
    }