protected override void CreateDirectory() { if (Directories == null) { return; } if (exifDir == null) { exifDir = Directories.OfType <ExifDirectoryBase>().FirstOrDefault(); } if (exifSubIfdDir == null) { exifSubIfdDir = Directories.OfType <ExifSubIfdDirectory>().FirstOrDefault(); } }
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); }