diff --git a/MetadataExtractor.Tests/DirectoryTest.cs b/MetadataExtractor.Tests/DirectoryTest.cs
index a6d71bb66..caf03752e 100644
--- a/MetadataExtractor.Tests/DirectoryTest.cs
+++ b/MetadataExtractor.Tests/DirectoryTest.cs
@@ -183,7 +183,7 @@ public void GetNonExistentTagIsNullForAllTypes()
}
[Fact]
- public new void ToString()
+ public void ToSimpleStringWithDefaultCulture()
{
var directory = new ExifIfd0Directory();
Assert.Equal("Exif IFD0 Directory (0 tags)", directory.ToString());
diff --git a/MetadataExtractor.Tests/MetadataExtractor.Tests.csproj b/MetadataExtractor.Tests/MetadataExtractor.Tests.csproj
index fbdba17b0..609486e7f 100644
--- a/MetadataExtractor.Tests/MetadataExtractor.Tests.csproj
+++ b/MetadataExtractor.Tests/MetadataExtractor.Tests.csproj
@@ -13,11 +13,11 @@
-
-
+
+
-
-
+
+
diff --git a/MetadataExtractor.Tests/RationalTest.cs b/MetadataExtractor.Tests/RationalTest.cs
index 7eff8542b..d2a3b2772 100644
--- a/MetadataExtractor.Tests/RationalTest.cs
+++ b/MetadataExtractor.Tests/RationalTest.cs
@@ -49,7 +49,7 @@ public void Construction()
[Fact]
[SuppressMessage("ReSharper", "SpecifyACultureInStringConversionExplicitly")]
- public new void ToString()
+ public void ToSimpleStringWithDefaultCulture()
{
Assert.Equal("1/3", new Rational(1, 3).ToString());
}
diff --git a/MetadataExtractor.sln b/MetadataExtractor.sln
index 08e4e7804..fbe3c2973 100644
--- a/MetadataExtractor.sln
+++ b/MetadataExtractor.sln
@@ -1,7 +1,7 @@
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 15
-VisualStudioVersion = 15.0.26430.4
+VisualStudioVersion = 15.0.27130.0
MinimumVisualStudioVersion = 10.0.40219.1
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{8CF154EA-6A2C-4BF4-B263-78758F834192}"
ProjectSection(SolutionItems) = preProject
@@ -35,7 +35,9 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Wiki", "Wiki", "{DD8398AB-E
wiki\Contributing.md = wiki\Contributing.md
wiki\FAQ.md = wiki\FAQ.md
wiki\File-Type-Detection.md = wiki\File-Type-Detection.md
+ wiki\Getting Started (dotnet).md = wiki\Getting Started (dotnet).md
wiki\Getting Started (Java).md = wiki\Getting Started (Java).md
+ wiki\Getting Started.md = wiki\Getting Started.md
wiki\Home.md = wiki\Home.md
wiki\JPEG.md = wiki\JPEG.md
wiki\ProGuard.md = wiki\ProGuard.md
@@ -48,8 +50,6 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Wiki", "Wiki", "{DD8398AB-E
wiki\UsedBy.md = wiki\UsedBy.md
wiki\Working-with-test-images.md = wiki\Working-with-test-images.md
wiki\XMP.md = wiki\XMP.md
- wiki\Getting Started.md = wiki\Getting Started.md
- wiki\Getting Started (dotnet).md = wiki\Getting Started (dotnet).md
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Specs", "Specs", "{1806EC0F-839C-45A4-9778-11A89CFD5C14}"
@@ -86,7 +86,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Wiki (Images)", "Wiki (Imag
wiki-images\Home.md = wiki-images\Home.md
EndProjectSection
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MetadataExtractor.Samples", "MetadataExtractor.Samples\MetadataExtractor.Samples.csproj", "{F8B15C79-7D2A-44F2-9E8A-1D5127FE6D91}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MetadataExtractor.Samples", "MetadataExtractor.Samples\MetadataExtractor.Samples.csproj", "{F8B15C79-7D2A-44F2-9E8A-1D5127FE6D91}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -146,14 +146,17 @@ Global
{96158958-7CA7-4BFC-A573-30F31E7F39A4}.Release|x64.Build.0 = Release|Any CPU
{F8B15C79-7D2A-44F2-9E8A-1D5127FE6D91}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{F8B15C79-7D2A-44F2-9E8A-1D5127FE6D91}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {F8B15C79-7D2A-44F2-9E8A-1D5127FE6D91}.Debug|x64.ActiveCfg = Debug|x64
- {F8B15C79-7D2A-44F2-9E8A-1D5127FE6D91}.Debug|x64.Build.0 = Debug|x64
+ {F8B15C79-7D2A-44F2-9E8A-1D5127FE6D91}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {F8B15C79-7D2A-44F2-9E8A-1D5127FE6D91}.Debug|x64.Build.0 = Debug|Any CPU
{F8B15C79-7D2A-44F2-9E8A-1D5127FE6D91}.Release|Any CPU.ActiveCfg = Release|Any CPU
{F8B15C79-7D2A-44F2-9E8A-1D5127FE6D91}.Release|Any CPU.Build.0 = Release|Any CPU
- {F8B15C79-7D2A-44F2-9E8A-1D5127FE6D91}.Release|x64.ActiveCfg = Release|x64
- {F8B15C79-7D2A-44F2-9E8A-1D5127FE6D91}.Release|x64.Build.0 = Release|x64
+ {F8B15C79-7D2A-44F2-9E8A-1D5127FE6D91}.Release|x64.ActiveCfg = Release|Any CPU
+ {F8B15C79-7D2A-44F2-9E8A-1D5127FE6D91}.Release|x64.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ SolutionGuid = {B3C98CDA-0400-456E-887B-70F751903DC3}
+ EndGlobalSection
EndGlobal
diff --git a/MetadataExtractor/Formats/Exif/ExifDirectoryBase.cs b/MetadataExtractor/Formats/Exif/ExifDirectoryBase.cs
index ed3ca8a0e..6cb3df623 100644
--- a/MetadataExtractor/Formats/Exif/ExifDirectoryBase.cs
+++ b/MetadataExtractor/Formats/Exif/ExifDirectoryBase.cs
@@ -723,6 +723,102 @@ public abstract class ExifDirectoryBase : Directory
public const int TagLens = 0xFDEA;
+ // tags from the Adobe DNG specification, v1.4.0.0
+ // Retrieved from https://helpx.adobe.com/photoshop/digital-negative.html, 2018-01-06. Tags are in the
+ // order in which they appear in the specification.
+ public const int TagDngVersion = 0xC612;
+ public const int TagDngBackwardVersion = 0xC613;
+ public const int TagUniqueCameraModel = 0xC614;
+ public const int TagLocalizedCameraModel = 0xC615;
+ public const int TagCfaPlaneColor = 0xC616;
+ public const int TagCfaLayout = 0xC617;
+ public const int TagLinearizationTable = 0xC618;
+ public const int TagBlackLevelRepeatDim = 0xC619;
+ public const int TagBlackLevel = 0xC61A;
+ public const int TagBlackLevelDeltaH = 0xC61B;
+ public const int TagBlackLevelDeltaV = 0xC61C;
+ public const int TagWhiteLevel = 0xC61D;
+ public const int TagDefaultScale = 0xC61E;
+ public const int TagBestQualityScale = 0xC65C;
+ public const int TagDefaultCropOrigin = 0xC61F;
+ public const int TagDefaultCropSize = 0xC620;
+ public const int TagCalibrationIlluminant1 = 0xC65A;
+ public const int TagCalibrationIlluminant2 = 0xC65B;
+ public const int TagColorMatrix1 = 0xC621;
+ public const int TagColorMatrix2 = 0xC622;
+ public const int TagCameraCalibration1 = 0xC623;
+ public const int TagCameraCalibration2 = 0xC624;
+ public const int TagReductionMatrix1 = 0xC625;
+ public const int TagReductionMatrix2 = 0xC626;
+ public const int TagAnalogBalance = 0xC627;
+ public const int TagAsShotNeutral = 0xC628;
+ public const int TagAsShotWhiteXY = 0xC628;
+ public const int TagBaselineExposure = 0xC62A;
+ public const int TagBaselineNoise = 0xC62B;
+ public const int TagBaselineSharpness = 0xC62C;
+ public const int TagBayerGreenSplit = 0xC62D;
+ public const int TagLinearResponseLimit = 0xC62D;
+ public const int TagCameraSerialNumber = 0xC62F;
+ public const int TagLensInfo = 0xC630;
+ public const int TagChromaBlurRadius = 0xC631;
+ public const int TagAntiAliasStrength = 0xC632;
+ public const int TagShadowScale = 0xC633;
+ public const int TagDngPrivateData = 0xC634;
+ public const int TagMakerNoteSafety = 0xC634;
+ public const int TagRawDataUniqueID = 0xC65D;
+ public const int TagOriginalRawFileName = 0xC68B;
+ public const int TagOriginalRawFileData = 0xC68C;
+ public const int TagActiveArea = 0xC68D;
+ public const int TagMaskedArea = 0xC68E;
+ public const int TagAsShotIccProfile = 0xC68F;
+ public const int TagAsShotPreProfileMatrix = 0xC690;
+ public const int TagCurrentIccProfile = 0xC691;
+ public const int TagCurrentPreProfileMatrix = 0xC692;
+ // tags added in DNG 1.2.0.0
+ public const int TagColorimetricReference = 0xC6BF;
+ public const int TagCameraCalibrationSignature = 0xC6F3;
+ public const int TagProfileCalibrationSignature = 0xC6F4;
+ public const int TagExtraCameraProfiles = 0xC6F5;
+ public const int TagAsShotProfileName = 0xC6F6;
+ public const int TagNoiseReductionApplied = 0xC6F7;
+ public const int TagProfileName = 0xC6F8;
+ public const int TagProfileHueSatMapDims = 0xC6F9;
+ public const int TagProfileHuseSatMapData1 = 0xC6FA;
+ public const int TagProfileHuseSatMapData2 = 0xC6FB;
+ public const int TagProfileToneCurve = 0xC6FC;
+ public const int TagProfileEmbedPolicy = 0xC6FD;
+ public const int TagProfileCopyright = 0xC6FE;
+ public const int TagForwardMatrix1 = 0xC714;
+ public const int TagForwardMatrix2 = 0xC715;
+ public const int TagPreviewApplicationName = 0xC716;
+ public const int TagPreviewApplicationVersion = 0xC717;
+ public const int TagPreviewSettingsName = 0xC718;
+ public const int TagPreviewSettingsDigest = 0xC719;
+ public const int TagPreviewColorSpace = 0xC71A;
+ public const int TagPreviewDateTime = 0xC71B;
+ public const int TagRawImageDigest = 0xC71C;
+ public const int TagOriginalRawFileDigest = 0xC71D;
+ public const int TagSubTileBlockSize = 0xC71E;
+ public const int TagRowInterleaveFactor = 0xC71F;
+ public const int TagProfileLookTableDims = 0xC725;
+ public const int TagProfileLookTableData = 0xC726;
+ // tags added in DNG 1.3.0.0
+ public const int TagOpcodeList1 = 0xC740;
+ public const int TagOpcodeList2 = 0xC741;
+ public const int TagOpcodeList3 = 0xC74E;
+ public const int TagNoiseProfile = 0xC761;
+ // tags added in DNG 1.4.0.0
+ public const int TagDefaultUserCrop = 0xC7B5;
+ public const int TagDefaultBlackRender = 0xC7A6;
+ public const int TagBaselineExposureOffset = 0xC7A5;
+ public const int TagProfileLookTableEncoding = 0xC7A4;
+ public const int TagProfileHueSatMapEncoding = 0xC7A3;
+ public const int TagOriginalDefaultFinalSize = 0xC791;
+ public const int TagOriginalBestQualityFinalSize = 0xC792;
+ public const int TagOriginalDefaultCropSize = 0xC793;
+ public const int TagNewRawImageDigest = 0xC7A7;
+ public const int TagRawToPreviewGain = 0xC7A8;
+
protected static void AddExifTagNames([NotNull] Dictionary map)
{
map[TagInteropIndex] = "Interoperability Index";
@@ -884,6 +980,97 @@ protected static void AddExifTagNames([NotNull] Dictionary map)
map[TagPanasonicTitle2] = "Panasonic Title (2)";
map[TagPadding] = "Padding";
map[TagLens] = "Lens";
+
+ // Adobe DNG tags
+ map[TagDngVersion] = "DNG Version";
+ map[TagDngBackwardVersion] = "DNG Backward Version (oldest compatible version)";
+ map[TagUniqueCameraModel] = "Unique Camera Model";
+ map[TagLocalizedCameraModel] = "Localized Camera Model";
+ map[TagCfaPlaneColor] = "CFA Plane Color";
+ map[TagCfaLayout] = "CFA Layout";
+ map[TagLinearizationTable] = "Linearization Table";
+ map[TagBlackLevelRepeatDim] = "Black Level Repeat";
+ map[TagBlackLevel] = "Black Level";
+ map[TagBlackLevelDeltaH] = "Black Level DeltaH";
+ map[TagBlackLevelDeltaV] = "Black Level DeltaV";
+ map[TagWhiteLevel] = "White Level";
+ map[TagDefaultScale] = "Default Scale";
+ map[TagBestQualityScale] = "Best Quality Scale";
+ map[TagDefaultCropOrigin] = "Default Crop Origin";
+ map[TagDefaultCropSize] = "Default Crop Size";
+ map[TagCalibrationIlluminant1] = "Calibration Illuminant 1";
+ map[TagCalibrationIlluminant2] = "Calibration Illuminant 2";
+ map[TagColorMatrix1] = "Color Matrix 1";
+ map[TagColorMatrix2] = "Color Matrix 2";
+ map[TagCameraCalibration1] = "Camera Calibration 1";
+ map[TagCameraCalibration2] = "Camera Calibration 2";
+ map[TagReductionMatrix1] = "Reduction Matrix 1";
+ map[TagReductionMatrix2] = "Reduction Matrix 2";
+ map[TagAnalogBalance] = "Analog Balance";
+ map[TagAsShotNeutral] = "As Shot Neutral";
+ map[TagAsShotWhiteXY] = "As Shot White XY";
+ map[TagBaselineExposure] = "Baseline Exposure";
+ map[TagBaselineNoise] = "Baseline Noise";
+ map[TagBaselineSharpness] = "Baseline Sharpness";
+ map[TagBayerGreenSplit] = "Bayer Green Split";
+ map[TagLinearResponseLimit] = "Linear Response Limit";
+ map[TagCameraSerialNumber] = "Camera Serial Number";
+ map[TagLensInfo] = "Lens Info";
+ map[TagChromaBlurRadius] = "Chroma Blur Radius";
+ map[TagAntiAliasStrength] = "Anti Alias Strength";
+ map[TagShadowScale] = "Shadow Scale";
+ map[TagDngPrivateData] = "DNG Private Data";
+ map[TagMakerNoteSafety] = "Maker Note Safety";
+ map[TagRawDataUniqueID] = "Raw Data Unique ID";
+ map[TagOriginalRawFileName] = "Original Raw File Name";
+ map[TagOriginalRawFileData] = "Original Raw File Data";
+ map[TagActiveArea] = "Active Area";
+ map[TagMaskedArea] = "Masked Area";
+ map[TagAsShotIccProfile] = "As Shot ICC Profile";
+ map[TagAsShotPreProfileMatrix] = "As Shot Pre-profile Matrix";
+ map[TagCurrentIccProfile] = "Current ICC Profile";
+ map[TagCurrentPreProfileMatrix] = "Current Pre-profile Matrix";
+ map[TagColorimetricReference] = "Colorimetric Reference";
+ map[TagCameraCalibrationSignature] = "Camera Calibration Signature";
+ map[TagProfileCalibrationSignature] = "Profile Calibration Signature";
+ map[TagExtraCameraProfiles] = "Extra Camera Profiles";
+ map[TagAsShotProfileName] = "As Shot Profile Name";
+ map[TagNoiseReductionApplied] = "Noise Reduction Applied";
+ map[TagProfileName] = "Profile Name";
+ map[TagProfileHueSatMapDims] = "Profile HSV Dimensions";
+ map[TagProfileHuseSatMapData1] = "Profile HSV Map 1";
+ map[TagProfileHuseSatMapData2] = "Profile HSV Map 2";
+ map[TagProfileToneCurve] = "Profile Tone Curve";
+ map[TagProfileEmbedPolicy] = "Profile Embed Policy";
+ map[TagProfileCopyright] = "Profile Copyright";
+ map[TagForwardMatrix1] = "Forward Matrix 1";
+ map[TagForwardMatrix2] = "Forward Matrix 2";
+ map[TagPreviewApplicationName] = "Preview Application Name";
+ map[TagPreviewApplicationVersion] = "Preview Application Version";
+ map[TagPreviewSettingsName] = "Preview Settings Name";
+ map[TagPreviewSettingsDigest] = "Preview Settings Digest";
+ map[TagPreviewColorSpace] = "Preview Color Space";
+ map[TagPreviewDateTime] = "Preview Date Time";
+ map[TagRawImageDigest] = "Raw Image Digest";
+ map[TagOriginalRawFileDigest] = "Original Raw File Digest";
+ map[TagSubTileBlockSize] = "Sub-tile Block Size";
+ map[TagRowInterleaveFactor] = "Row Interleave Factor";
+ map[TagProfileLookTableDims] = "Profile LookTable Dimensions";
+ map[TagProfileLookTableData] = "Profile LookTable Data";
+ map[TagOpcodeList1] = "Opcode List 1";
+ map[TagOpcodeList2] = "Opcode List 2";
+ map[TagOpcodeList3] = "Opcode List 3";
+ map[TagNoiseProfile] = "Noise Profile";
+ map[TagDefaultUserCrop] = "Default User Crop";
+ map[TagDefaultBlackRender] = "Default Black Render";
+ map[TagBaselineExposureOffset] = "Baseline Exposure Offset";
+ map[TagProfileLookTableEncoding] = "Profile LookTable Encoding";
+ map[TagProfileHueSatMapEncoding] = "Profile HueSatMap Encoding";
+ map[TagOriginalDefaultFinalSize] = "Original Default Final Size";
+ map[TagOriginalBestQualityFinalSize] = "Best Quality Final Size";
+ map[TagOriginalDefaultCropSize] = "Original Default Crop Size";
+ map[TagNewRawImageDigest] = "New Raw Image Digest";
+ map[TagRawToPreviewGain] = "Raw to Preview Gain";
}
}
}