Comments (9)
Also, are you able and willing to donate those sample images to this project? Are they your original images?
Sure and are my original images.
from metadata-extractor-dotnet.
Hi,
@drewnoakes , I can accept your propose to try and do that myself. Please share with me any useful information to accomplish this task.
Thanks
from metadata-extractor-dotnet.
@skorpionet100 sure, I'll be happy to guide you.
First, I assume this information is stored in a "makernote". These are areas in TIFF data where manufacturers can store data specific to their devices. Note that both Exif and raw files use TIFF encoding.
Some more general information about makernotes here: https://github.com/drewnoakes/metadata-extractor/wiki/Makernotes
We already have a PentaxMakernoteDirectory
class and a RicohMakernoteDirectory
. You may be able to extend those. In some cases, manufacturers have multiple versions of makernotes across devices. In such cases, we create different directories for each.
Let me know if you have any questions.
from metadata-extractor-dotnet.
Also, are you able and willing to donate those sample images to this project? Are they your original images?
from metadata-extractor-dotnet.
I took a quick look at this for you. This should help:
diff --git a/MetadataExtractor/Formats/Exif/ExifTiffHandler.cs b/MetadataExtractor/Formats/Exif/ExifTiffHandler.cs
index bb52ae82..e14b368d 100644
--- a/MetadataExtractor/Formats/Exif/ExifTiffHandler.cs
+++ b/MetadataExtractor/Formats/Exif/ExifTiffHandler.cs
@@ -707,6 +707,11 @@ namespace MetadataExtractor.Formats.Exif
// Always in Motorola byte order
TiffReader.ProcessIfd(this, context.WithByteOrder(isMotorolaByteOrder: true).WithShiftedBaseOffset(makernoteOffset), 8);
}
+ else if (firstTenChars.Equals("PENTAX \0II", StringComparison.Ordinal))
+ {
+ PushDirectory(new PentaxMakernoteDirectory()); // TODO use the correct directory class here
+ TiffReader.ProcessIfd(this, context.WithByteOrder(isMotorolaByteOrder: false).WithShiftedBaseOffset(makernoteOffset), 10);
+ }
}
else if (string.Equals(firstTenChars, "Apple iOS\0", StringComparison.Ordinal))
{
The use of PentaxMakernoteDirectory
here is just to get things working. I think the schema of values here is new, so you'll need to create a new set of classes as described in the linked wiki page above.
Good luck!
from metadata-extractor-dotnet.
There may also be a "PENTAX \0MM"
form where isMotorolaByteOrder: true
.
This might be helpful too: https://exiv2.org/tags-pentax.html
from metadata-extractor-dotnet.
Hi,
can I use VS 2022? The correct way to get the code is to clone the github repository?
Thanks
from metadata-extractor-dotnet.
@skorpionet100 yes, sorry I missed your message. VS2022 and a git clone will get you started. Create a fork of this repo, clone that to your machine, create a new branch, commit your changes, push to your fork, create a pull request here. That's the general process. You can find nice docs online to walk you through the process if you're new to it.
from metadata-extractor-dotnet.
I put basic support for this in #321.
What remains extending the descriptor class in order to show decoded values for many of the tags.
Here's an example from Pentax K-1 Mark II.jpg
:
[Pentax Makernote - 0x0000] PentaxVersion = 12 3 2 0
[Pentax Makernote - 0x0001] PentaxModelType = 0
[Pentax Makernote - 0x0005] PentaxModelId = 78400
[Pentax Makernote - 0x0006] Date = 7 228 7 11
[Pentax Makernote - 0x0007] Time = 4 58 13
[Pentax Makernote - 0x0008] Quality = 2
[Pentax Makernote - 0x000c] FlashMode = 1 63
[Pentax Makernote - 0x000d] FocusMode = 3
[Pentax Makernote - 0x000e] AFPointSelected = 0 0
[Pentax Makernote - 0x0012] ExposureTime = 3333
[Pentax Makernote - 0x0013] FNumber = 71
[Pentax Makernote - 0x0014] Iso = 24
[Pentax Makernote - 0x0016] ExposureCompensation = 50 0
[Pentax Makernote - 0x0017] MeteringMode = 0
[Pentax Makernote - 0x0018] AutoBracketing = 0 0
[Pentax Makernote - 0x0019] WhiteBalance = 1
[Pentax Makernote - 0x001d] FocalLength = 6000
[Pentax Makernote - 0x001f] Saturation = 1
[Pentax Makernote - 0x0020] Contrast = 4
[Pentax Makernote - 0x0021] Sharpness = 1
[Pentax Makernote - 0x0027] DSPFirmwareVersion = 254 251 255 248
[Pentax Makernote - 0x002d] EffectiveLV = 4736
[Pentax Makernote - 0x0032] ImageEditing = 2 0 0 0
[Pentax Makernote - 0x0033] PictureMode2 = 8 0 1
[Pentax Makernote - 0x0034] DriveMode = 0 0 1 0
[Pentax Makernote - 0x0037] ColorSpace = 0
[Pentax Makernote - 0x003d] DataScaling = 7679
[Pentax Makernote - 0x003f] LensRec = 8 227 0 0
[Pentax Makernote - 0x0040] SensitivityAdjust = 50
[Pentax Makernote - 0x0041] ImageEditCount = 1
[Pentax Makernote - 0x0047] CameraTemperature = 25
[Pentax Makernote - 0x0048] AELock = 0
[Pentax Makernote - 0x0049] NoiseReduction = 0
[Pentax Makernote - 0x004d] FlashExposureComp = 0 0
[Pentax Makernote - 0x004f] ImageTone = 1
[Pentax Makernote - 0x0050] ColorTemperature = 0
[Pentax Makernote - 0x005c] ShakeReductionInfo = 64 0
[Pentax Makernote - 0x005d] ShutterCount = 252 33 224 54
[Pentax Makernote - 0x0060] FaceInfo = 0 0 0 0
[Pentax Makernote - 0x0062] RawDevelopmentProcess = 16
[Pentax Makernote - 0x0067] Hue = 1
[Pentax Makernote - 0x0068] AWBInfo = 0 1
[Pentax Makernote - 0x0069] DynamicRangeExpansion = 0 2 0 0
[Pentax Makernote - 0x006b] TimeInfo = 6 0 23 23
[Pentax Makernote - 0x006c] HighLowKeyAdj = 0 0
[Pentax Makernote - 0x006d] ContrastHighlight = 2 0
[Pentax Makernote - 0x006e] ContrastShadow = -1 0
[Pentax Makernote - 0x006f] ContrastHighlightShadowAdj = 1
[Pentax Makernote - 0x0070] FineSharpness = 1 2
[Pentax Makernote - 0x0071] HighISONoiseReduction = 0 0
[Pentax Makernote - 0x0072] AFAdjustment = 3
[Pentax Makernote - 0x0073] MonochromeFilterEffect = 65535
[Pentax Makernote - 0x0074] MonochromeToning = 65535
[Pentax Makernote - 0x0076] FaceDetect = 0 0 0
[Pentax Makernote - 0x0077] FaceDetectFrameSize = 720 480
[Pentax Makernote - 0x0078] Unknown tag (0x0078) = 0 0
[Pentax Makernote - 0x0079] ShadowCorrection = 2 4
[Pentax Makernote - 0x007a] ISOAutoParameters = 1 0
[Pentax Makernote - 0x007b] CrossProcess = 0
[Pentax Makernote - 0x007d] LensCorr = 0 0 0 0
[Pentax Makernote - 0x007f] BleachBypassToning = 65535
[Pentax Makernote - 0x0080] AspectRatio = 1
[Pentax Makernote - 0x0085] HDR = 0 0 0 0
[Pentax Makernote - 0x0086] Unknown tag (0x0086) = 0
[Pentax Makernote - 0x0087] ShutterType = 0
[Pentax Makernote - 0x0092] IntervalShooting = 0 0
[Pentax Makernote - 0x0093] Unknown tag (0x0093) = 0
[Pentax Makernote - 0x0095] SkinToneCorrection = 0 0
[Pentax Makernote - 0x0096] ClarityControl = 0 0
[Pentax Makernote - 0x0098] Unknown tag (0x0098) = 1 1 0
[Pentax Makernote - 0x0200] BlackPoint = 1024 1024 1024 1024
[Pentax Makernote - 0x0201] WhitePoint = 17472 8192 8192 13408
[Pentax Makernote - 0x0205] CameraSettings = [40 values]
[Pentax Makernote - 0x0206] AEInfo = [64 values]
[Pentax Makernote - 0x0207] LensInfo = [128 values]
[Pentax Makernote - 0x0208] FlashInfo = [36 values]
[Pentax Makernote - 0x0209] AEMeteringSegments = [4050 values]
[Pentax Makernote - 0x020a] FlashMeteringSegments = [1350 values]
[Pentax Makernote - 0x020b] SlaveFlashMeteringSegments = [1350 values]
[Pentax Makernote - 0x0215] CameraInfo = 78400 20180410 2 1 2040540
[Pentax Makernote - 0x0216] BatteryInfo = [20 values]
[Pentax Makernote - 0x021a] Unknown tag (0x021a) = [1146 values]
[Pentax Makernote - 0x021b] SaturationInfo = [382 values]
[Pentax Makernote - 0x021c] ColorMatrixA2 = [18 values]
[Pentax Makernote - 0x021d] ColorMatrixB2 = [18 values]
[Pentax Makernote - 0x021e] Unknown tag (0x021e) = 0 32 0 32 0 32 0 32
[Pentax Makernote - 0x021f] AFInfo = [2048 values]
[Pentax Makernote - 0x0221] KelvinWB = [138 values]
[Pentax Makernote - 0x0222] ColorInfo = [18 values]
[Pentax Makernote - 0x0224] EVStepInfo = [64 values]
[Pentax Makernote - 0x0226] ShotInfo = [76 values]
[Pentax Makernote - 0x0227] FacePos = [128 values]
[Pentax Makernote - 0x0228] FaceSize = [128 values]
[Pentax Makernote - 0x0229] SerialNumber = 7356770
[Pentax Makernote - 0x022a] FilterInfo = [345 values]
[Pentax Makernote - 0x022b] LevelInfo = [18 values]
[Pentax Makernote - 0x022c] Unknown tag (0x022c) = [46 values]
[Pentax Makernote - 0x022d] WBLevels = [109 values]
[Pentax Makernote - 0x0231] ContrastDetectAFArea = 404 216 48 48
[Pentax Makernote - 0x0234] Unknown tag (0x0234) = [161 values]
[Pentax Makernote - 0x0238] Unknown tag (0x0238) = 0 0 0 0 0 0 0 0 0 0 0
[Pentax Makernote - 0x023b] Unknown tag (0x023b) = [32 values]
[Pentax Makernote - 0x023c] Unknown tag (0x023c) = [1024 values]
[Pentax Makernote - 0x023d] Unknown tag (0x023d) = [20 values]
[Pentax Makernote - 0x023e] Unknown tag (0x023e) = 14 0 28 0 192 28 48 19
[Pentax Makernote - 0x0240] Unknown tag (0x0240) = [384 values]
[Pentax Makernote - 0x0241] Unknown tag (0x0241) = 247 222 0 0 247 222 0 0 15 104 0 0 163 102 0 0
[Pentax Makernote - 0x0242] Unknown tag (0x0242) = [1350 values]
[Pentax Makernote - 0x0243] PixelShiftInfo = [148 values]
[Pentax Makernote - 0x0244] Unknown tag (0x0244) = [52 values]
[Pentax Makernote - 0x0245] AFPointInfo = 1 0 33 0 0 0 0 0 64 0 0 0 0
[Pentax Makernote - 0x03ff] TempInfo = [768 values]
[Pentax Makernote - 0x0404] Unknown tag (0x0404) = [2086 values]
[Pentax Makernote - 0x0406] Unknown tag (0x0406) = [4116 values]
As you can see, many of the values are just displayed as numbers. We need to extend the descriptor to provide these descriptions, using the data available in https://exiftool.org/TagNames/Pentax.html
For inspiration, take a look at an existing descriptor class, such as CasioType1MakernoteDescriptor
.
from metadata-extractor-dotnet.
Related Issues (20)
- Drone Flight Rotational and Velocity Metadata Inclusion HOT 1
- Inaccurate Meta Data for m4a media format HOT 10
- Issue in extracting metadata HOT 2
- Reading iPhone MOV throws File format could not be determined HOT 3
- Reading XMP data from MP3 files? HOT 6
- Does it works with unity game engine? HOT 7
- Incorrectly identifies avif image file as "video/quicktime" HOT 2
- FileTypeDetector.DetectFileType as MP3 for a textfile
- Rounding error in Shutter Speed value? HOT 1
- Support detection of Placeholder files HOT 5
- Encoding Error extracting XMP data from PNG file HOT 12
- cannot find package in nuget HOT 3
- Bump net4.5 -> net462 HOT 2
- AOT analyser warnings in the Tiff reader code HOT 11
- Search regression data for "End of data reached." and improve buffer length detection HOT 1
- Support C2PA metadata
- Problems when using package with the .NET Native Toolchain HOT 3
- PNG metadata ? HOT 2
- Q. about XMP/RDF parsing / error handling in MetadataExtractor/XmpCore HOT 3
- Bug in PNG compressed iTXt chunk
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from metadata-extractor-dotnet.