Open Wormnest opened 8 months ago
Same on Linux using 0.28.2:
$ ./a.out PXL_20231220_182442817.jpg
Testing exiv2 namespace info (exiv2 version 0.28.2)
Container namespace: 'http://ns.google.com/photos/1.0/container/'.
Exiv2 exception: 'No namespace info available for XMP prefix `Item'
Still trying to understand the issue though.
It do seam to dump the namespace/container info properly (?):
$ exiv2 -PX ./PXL_20231220_182442817.jpg
Xmp.hdrgm.Version XmpText 3 1.0
Xmp.xmpNote.HasExtendedXMP XmpText 32 9AABF2DA602006640FE14B0C857436F3
Xmp.Container.Directory XmpText 0 type="Seq"
Xmp.Container.Directory[1] XmpText 0 type="Struct"
Xmp.Container.Directory[1]/Container:Item XmpText 0 type="Struct"
Xmp.Container.Directory[1]/Container:Item/Item:Mime XmpText 10 image/jpeg
Xmp.Container.Directory[1]/Container:Item/Item:Semantic XmpText 7 Primary
Xmp.Container.Directory[2] XmpText 0 type="Struct"
Xmp.Container.Directory[2]/Container:Item XmpText 0 type="Struct"
Xmp.Container.Directory[2]/Container:Item/Item:Mime XmpText 10 image/jpeg
Xmp.Container.Directory[2]/Container:Item/Item:Semantic XmpText 7 GainMap
Xmp.Container.Directory[2]/Container:Item/Item:Length XmpText 6 207318
Result of image->xmpPacket()
do seam to contain stuff as well:
<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?>
<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 4.4.0-Exiv2">
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<rdf:Description rdf:about="" xmlns:hdrgm="http://ns.adobe.com/hdr-gain-map/1.0/" xmlns:xmpNote="http://ns.adobe.com/xmp/note/" xmlns:Container="http://ns.google.com/photos/1.0/container/" xmlns:Item="http://ns.google.com/photos/1.0/container/item/" hdrgm:Version="1.0" xmpNote:HasExtendedXMP="9AABF2DA602006640FE14B0C857436F3">
<Container:Directory>
<rdf:Seq>
<rdf:li rdf:parseType="Resource">
<Container:Item Item:Mime="image/jpeg" Item:Semantic="Primary"/>
</rdf:li>
<rdf:li rdf:parseType="Resource">
<Container:Item Item:Mime="image/jpeg" Item:Semantic="GainMap" Item:Length="207318"/>
</rdf:li>
</rdf:Seq>
</Container:Directory>
</rdf:Description>
</rdf:RDF>
</x:xmpmeta>
Also, the list of registered namespaces
only contains "Container namespace" (and bunch of other, unrelated ones):
Exiv2::Dictionary ns_dict;
Exiv2::XmpProperties::registeredNamespaces(ns_dict);
for (auto const& entry : ns_dict)
{
std::cout << entry.first << ": " << entry.second << std::endl;
}
...
...
xmpRights: http://ns.adobe.com/xap/1.0/rights/
xmpT: http://ns.adobe.com/xap/1.0/t/
xmpTPg: http://ns.adobe.com/xap/1.0/t/pg/
xmpidq: http://ns.adobe.com/xmp/Identifier/qual/1.0/
Container namespace: 'http://ns.google.com/photos/1.0/container/'.
It would seem, that http://ns.adobe.com/hdr-gain-map/1.0/"
is also missing o_0
But despite everything, accessing by explicit key works:
$ exiv2 -K "Xmp.Container.Directory[1]/Container:Item" ./PXL_20231220_182442817.jpg
Xmp.Container.Directory[1]/Container:Item XmpText 0 type="Struct"
o_0
Describe the bug
Certain xmp namespaces that we know are present in an image, do not get registered. When trying to retrieve the namespace it throws "No namespace info available for XMP prefix `Item'".
This is known to happen with:
Item
- namespacehttp://ns.google.com/photos/1.0/container/item/
(see GIMP issue https://gitlab.gnome.org/GNOME/gimp/-/issues/10557.apple-fi
To Reproduce
Steps to reproduce the behavior:
Use the image from the above linked GIMP issue: https://shallowsky.com/tmp/PXL_20231220_182442817.jpg Note only the direct link works since Gitlab removes most metadata.
Build and run the supplied sample program on the above image. (attaching a zip doesn't seem to work, so replaced cpp with txt) test-namespace.txt
Tested on Windows 10 Home, 64-bit using: MINGW64:
UCRT64:
Expected behavior
I expect it to return the namespace for the
Item
prefix just like it does forContainer
.Desktop (please complete the following information):
Additional context