![]() R +5 -1 core/libs/metadataengine/exiftool/exiftoolparser.h ![]() R +9 -0 core/libs/metadataengine/exiftool/exiftoolparser.cpp M +9 -0 core/libs/metadataengine/CMakeLists.txt We will do it step by step as ExifTool to Exiv2 tags name conversion is a big puzzle. Move ExifTool wrapper to digiKam core for a future use as simple extra info viewer in metadata sidebarĮxiv2 translator is not yet used, and no DMetadata integration is done. Voilà, i continue to work on this ExifTool wrapper to at least provide a read metadata mechanism for 7.3.0 or 7.4.0 A unit test to validate conversion and to found new exception must be written. For the 20% left, custom rules must be written to handle exceptions. Take a look to the current hard-coded Exif tags list for ex :Ī better way is to write generic rules to populate the hash table automatically which will support 80% of ExifTool tags compatible with Exiv2. It work but it's not the right way to do, as typically, the main tag "name" is at 80% the same between ExifTool and Exiv2:ĮxifTool tag naming scheme : group0:group1:group2:nameĮxiv2 tag naming scheme : I started to write the tags map one by one, and it really a huge task to achieve. Basically, one main hash table need to be populated to know the correspondence. * I write a ExifTool to Exiv2 tags converter (and vis-versa). Both work as expected, even if improvements still in my TODO list. * I write 2 unit tests : one to display the ExifTool parsing results with Exiv2 tags conversion, and another one to backport ExifTool tags to Exiv2 with DMetadata container. So is write a parser class to delegate and capture signal event from the core class with a dedicated event loop and now the code can be streamlined in DMetadata in a synchronous run-time. It can also chain request to ExifTool, but it use Qt signal slot mechanism with QProcess, which is less adapted to DMetadata integration. It's definitively the best way to do, event if code is a little bit slower the official C++ wrapper. This code is more simple as all the json parsing is delegate to Qt. The advantage to this wrapper is the speed and the capability to chain requests with a pending instance of ExifTool in memory.Ĭompatible with Qt5 and Qt6, this one use a json container to handle ExifTool information. ![]() Also this code do not compile under Windows with MSVC, only MinGW. I tried, and after to reformat all source code to understand the structure, i admit this wrapper is not adapted for DK. So typically to get and set preview, markernote, icc profile, xmp packet, it's not possible. It's limited to capture non binary tags values. ![]() This one use a low level C ANSI call internally and capture meta information using a PHP compliant container. the official C++ version from ExifTool author: * I experimented and review code from 2 ExifTool parser: ![]()
0 Comments
Leave a Reply. |