Chilkat HOME .NET Core C# Android™ AutoIt C C# C++ Chilkat2-Python CkPython Classic ASP DataFlex Delphi ActiveX Delphi DLL Go Java Lianja Mono C# Node.js Objective-C PHP ActiveX PHP Extension Perl PowerBuilder PowerShell PureBasic Ruby SQL Server Swift 2 Swift 3,4,5... Tcl Unicode C Unicode C++ VB.NET VBScript Visual Basic 6.0 Visual FoxPro Xojo Plugin
(C++) Extract XMP MetaData as XMLDemonstrates how to open a JPG or TIF image file and extract the XMP metadata as XML.
#include <CkXmp.h> #include <CkXml.h> void ChilkatSample(void) { // This requires the Chilkat API to have been previously unlocked. // See Global Unlock Sample for sample code. CkXmp xmp; // Load a JPG or TIF image file. // Sample JPG's with XMP metadata may be found at: // https://www.chilkatsoft.com/testData/xmp/sample1.jpg // https://www.chilkatsoft.com/testData/xmp/sample2.jpg // https://www.chilkatsoft.com/testData/xmp/sample3.jpg bool success = xmp.LoadAppFile("qa_data/xmp/sample1.jpg"); if (success != true) { std::cout << xmp.lastErrorText() << "\r\n"; return; } std::cout << "Num embedded XMP docs: " << xmp.get_NumEmbedded() << "\r\n"; // Assuming there is at least one, get the 1st. // (There is typically never more than one, but theoretically it's possible.) CkXml *xml = xmp.GetEmbedded(0); if (xmp.get_LastMethodSuccess() == false) { std::cout << "No XMP metadata found." << "\r\n"; return; } std::cout << xml->getXml() << "\r\n"; // Sample output: // <?xml version="1.0" encoding="utf-8"?> // <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP toolkit 3.0-28, framework 1.6"> // <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:iX="http://ns.adobe.com/iX/1.0/"> // <rdf:Description rdf:about="uuid:0f410648-9396-11d9-bb8e-a67e6693b6e9" xmlns:xmpPLUS="XMP Photographic Licensing Universal System (xmpPLUS, http://ns.adobe.com/xap/1.0/PLUS/)"> // <xmpPLUS:CreditLineReq>False</xmpPLUS:CreditLineReq> // <xmpPLUS:ReuseAllowed>False</xmpPLUS:ReuseAllowed> // </rdf:Description> // <rdf:Description rdf:about="uuid:0f410648-9396-11d9-bb8e-a67e6693b6e9" xmlns:Iptc4xmpCore="http://iptc.org/std/Iptc4xmpCore/1.0/xmlns/"> // <Iptc4xmpCore:IntellectualGenre>Profile</Iptc4xmpCore:IntellectualGenre> // <Iptc4xmpCore:Location>Lake Superior</Iptc4xmpCore:Location> // <Iptc4xmpCore:CountryCode>US</Iptc4xmpCore:CountryCode> // <Iptc4xmpCore:CreatorContactInfo rdf:parseType="Resource"> // <Iptc4xmpCore:CiAdrExtadr>John Doe Photography, 123 Maple Lane</Iptc4xmpCore:CiAdrExtadr> // <Iptc4xmpCore:CiAdrCity>Champaign</Iptc4xmpCore:CiAdrCity> // <Iptc4xmpCore:CiAdrRegion>Illinois</Iptc4xmpCore:CiAdrRegion> // <Iptc4xmpCore:CiAdrPcode>61820</Iptc4xmpCore:CiAdrPcode> // <Iptc4xmpCore:CiAdrCtry>USA</Iptc4xmpCore:CiAdrCtry> // <Iptc4xmpCore:CiTelWork>+1 (217) 1234567</Iptc4xmpCore:CiTelWork> // <Iptc4xmpCore:CiEmailWork>john@doe.com</Iptc4xmpCore:CiEmailWork> // <Iptc4xmpCore:CiUrlWork>www.doe.com</Iptc4xmpCore:CiUrlWork> // </Iptc4xmpCore:CreatorContactInfo> // <Iptc4xmpCore:SubjectCode> // <rdf:Bag> // <rdf:li>14024001</rdf:li> // </rdf:Bag> // </Iptc4xmpCore:SubjectCode> // <Iptc4xmpCore:Scene> // <rdf:Bag> // <rdf:li>012300</rdf:li> // </rdf:Bag> // </Iptc4xmpCore:Scene> // </rdf:Description> // <rdf:Description rdf:about="uuid:0f410648-9396-11d9-bb8e-a67e6693b6e9" xmlns:exif="http://ns.adobe.com/exif/1.0/"> // <exif:ColorSpace>1</exif:ColorSpace> // <exif:PixelXDimension>288</exif:PixelXDimension> // <exif:PixelYDimension>432</exif:PixelYDimension> // </rdf:Description> // <rdf:Description rdf:about="uuid:0f410648-9396-11d9-bb8e-a67e6693b6e9" xmlns:pdf="http://ns.adobe.com/pdf/1.3/"/> // <rdf:Description rdf:about="uuid:0f410648-9396-11d9-bb8e-a67e6693b6e9" xmlns:photoshop="http://ns.adobe.com/photoshop/1.0/"> // <photoshop:AuthorsPosition>Photographer</photoshop:AuthorsPosition> // <photoshop:Headline>Young boy yelling</photoshop:Headline> // <photoshop:CaptionWriter>John Doe</photoshop:CaptionWriter> // <photoshop:DateCreated>2004-08-19</photoshop:DateCreated> // <photoshop:City>Marquette</photoshop:City> // <photoshop:State>Michigan</photoshop:State> // <photoshop:Country>United States</photoshop:Country> // <photoshop:TransmissionReference>PO 34567</photoshop:TransmissionReference> // <photoshop:Instructions>Original RAW capture Nikon D2X, Adobe RGB 1998.</photoshop:Instructions> // <photoshop:Credit>John Doe Photography</photoshop:Credit> // <photoshop:Source>John Doe Photography</photoshop:Source> // <photoshop:History/> // </rdf:Description> // <rdf:Description rdf:about="uuid:0f410648-9396-11d9-bb8e-a67e6693b6e9" xmlns:tiff="http://ns.adobe.com/tiff/1.0/"> // <tiff:XResolution>72/1</tiff:XResolution> // <tiff:YResolution>72/1</tiff:YResolution> // <tiff:ResolutionUnit>2</tiff:ResolutionUnit> // <tiff:Orientation>1</tiff:Orientation> // </rdf:Description> // <rdf:Description rdf:about="uuid:0f410648-9396-11d9-bb8e-a67e6693b6e9" xmlns:xap="http://ns.adobe.com/xap/1.0/"> // <xap:CreateDate>2005-03-13T02:02:29-06:00</xap:CreateDate> // <xap:ModifyDate>2005-03-13T02:02:29-06:00</xap:ModifyDate> // <xap:MetadataDate>2005-03-13T02:02:29-06:00</xap:MetadataDate> // <xap:CreatorTool>Adobe Photoshop CS Windows</xap:CreatorTool> // </rdf:Description> // <rdf:Description rdf:about="uuid:0f410648-9396-11d9-bb8e-a67e6693b6e9" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmlns:xapMM="http://ns.adobe.com/xap/1.0/mm/"> // <xapMM:DerivedFrom rdf:parseType="Resource"> // <stRef:instanceID>uuid:f5b64171-9394-11d9-bb8e-a67e6693b6e9</stRef:instanceID> // <stRef:documentID>adobe:docid:photoshop:e4d002a4-9392-11d9-bb8e-a67e6693b6e9</stRef:documentID> // </xapMM:DerivedFrom> // <xapMM:DocumentID>adobe:docid:photoshop:0f410647-9396-11d9-bb8e-a67e6693b6e9</xapMM:DocumentID> // </rdf:Description> // <rdf:Description rdf:about="uuid:0f410648-9396-11d9-bb8e-a67e6693b6e9" xmlns:xapRights="http://ns.adobe.com/xap/1.0/rights/"> // <xapRights:Marked>True</xapRights:Marked> // <xapRights:WebStatement>http://www.doe.com</xapRights:WebStatement> // <xapRights:RightsUsageTerms> // <rdf:Alt> // <rdf:li xml:lang="x-default">For consideration only, no reproduction without prior permission</rdf:li> // </rdf:Alt> // </xapRights:RightsUsageTerms> // <xapRights:UsageTerms> // <rdf:Alt> // <rdf:li xml:lang="x-default">For consideration only, no reproduction without prior permission</rdf:li> // </rdf:Alt> // </xapRights:UsageTerms> // </rdf:Description> // <rdf:Description rdf:about="uuid:0f410648-9396-11d9-bb8e-a67e6693b6e9" xmlns:dc="http://purl.org/dc/elements/1.1/"> // <dc:format>image/jpeg</dc:format> // <dc:description> // <rdf:Alt> // <rdf:li xml:lang="x-default">Three year old African American boy yells with joy on beach during vacation.</rdf:li> // </rdf:Alt> // </dc:description> // <dc:title> // <rdf:Alt> // <rdf:li xml:lang="x-default">20040819_pe_014578d.nef</rdf:li> // </rdf:Alt> // </dc:title> // <dc:rights> // <rdf:Alt> // <rdf:li xml:lang="x-default">2004 John Doe, all rights reserved</rdf:li> // </rdf:Alt> // </dc:rights> // <dc:creator> // <rdf:Seq> // <rdf:li>John Doe</rdf:li> // </rdf:Seq> // </dc:creator> // <dc:subject> // <rdf:Bag> // <rdf:li>boy</rdf:li> // <rdf:li>gender</rdf:li> // <rdf:li>human beings</rdf:li> // <rdf:li>humans</rdf:li> // <rdf:li>lad</rdf:li> // <rdf:li>male</rdf:li> // <rdf:li>people</rdf:li> // <rdf:li>3-12 years old</rdf:li> // <rdf:li>age</rdf:li> // <rdf:li>child</rdf:li> // <rdf:li>youth</rdf:li> // <rdf:li>african american</rdf:li> // <rdf:li>african-american</rdf:li> // <rdf:li>black</rdf:li> // <rdf:li>ethnic</rdf:li> // <rdf:li>ethnicity</rdf:li> // <rdf:li>people of color</rdf:li> // <rdf:li>race</rdf:li> // <rdf:li>beach</rdf:li> // <rdf:li>nature</rdf:li> // <rdf:li>scenery</rdf:li> // <rdf:li>emotion</rdf:li> // <rdf:li>emotional</rdf:li> // <rdf:li>emotions</rdf:li> // <rdf:li>happiness</rdf:li> // <rdf:li>happy</rdf:li> // <rdf:li>joy</rdf:li> // <rdf:li>joyful</rdf:li> // <rdf:li>joyous</rdf:li> // </rdf:Bag> // </dc:subject> // </rdf:Description> // </rdf:RDF> // </x:xmpmeta> // You can generate parsing code using Chilkat's online tool : // Generate Parsing Code from XML const char *rdf_Description_rdf_about = 0; const char *rdf_Description_xmlns_xmpPLUS = 0; const char *rdf_Description_xmlns_Iptc4xmpCore = 0; const char *rdf_Description_xmlns_exif = 0; const char *rdf_Description_xmlns_pdf = 0; const char *rdf_Description_xmlns_photoshop = 0; const char *rdf_Description_xmlns_tiff = 0; const char *rdf_Description_xmlns_xap = 0; const char *rdf_Description_xmlns_stRef = 0; const char *rdf_Description_xmlns_xapMM = 0; const char *rdf_Description_xmlns_xapRights = 0; const char *rdf_Description_xmlns_dc = 0; const char *xmpPLUS_CreditLineReq = 0; const char *xmpPLUS_ReuseAllowed = 0; const char *Iptc4xmpCore_IntellectualGenre = 0; const char *Iptc4xmpCore_Location = 0; const char *Iptc4xmpCore_CountryCode = 0; const char *Iptc4xmpCore_CreatorContactInfo_rdf_parseType = 0; const char *Iptc4xmpCore_CiAdrExtadr = 0; const char *Iptc4xmpCore_CiAdrCity = 0; const char *Iptc4xmpCore_CiAdrRegion = 0; int Iptc4xmpCore_CiAdrPcode; const char *Iptc4xmpCore_CiAdrCtry = 0; const char *Iptc4xmpCore_CiTelWork = 0; const char *Iptc4xmpCore_CiEmailWork = 0; const char *Iptc4xmpCore_CiUrlWork = 0; int rdf_li; int exif_ColorSpace; int exif_PixelXDimension; int exif_PixelYDimension; const char *photoshop_AuthorsPosition = 0; const char *photoshop_Headline = 0; const char *photoshop_CaptionWriter = 0; const char *photoshop_DateCreated = 0; const char *photoshop_City = 0; const char *photoshop_State = 0; const char *photoshop_Country = 0; const char *photoshop_TransmissionReference = 0; const char *photoshop_Instructions = 0; const char *photoshop_Credit = 0; const char *photoshop_Source = 0; const char *tiff_XResolution = 0; const char *tiff_YResolution = 0; int tiff_ResolutionUnit; int tiff_Orientation; const char *xap_CreateDate = 0; const char *xap_ModifyDate = 0; const char *xap_MetadataDate = 0; const char *xap_CreatorTool = 0; const char *xapMM_DerivedFrom_rdf_parseType = 0; const char *stRef_instanceID = 0; const char *stRef_documentID = 0; const char *xapMM_DocumentID = 0; const char *xapRights_Marked = 0; const char *xapRights_WebStatement = 0; const char *rdf_li_xml_lang = 0; const char *strRdf_li = 0; const char *dc_format = 0; int j; int count_j; const char *x_xmpmeta_xmlns_x = xml->getAttrValue("xmlns:x"); const char *x_xmpmeta_x_xmptk = xml->getAttrValue("x:xmptk"); const char *rdf_RDF_xmlns_rdf = xml->chilkatPath("rdf:RDF|(xmlns:rdf)"); const char *rdf_RDF_xmlns_iX = xml->chilkatPath("rdf:RDF|(xmlns:iX)"); int i = 0; int count_i = xml->NumChildrenHavingTag("rdf:RDF|rdf:Description"); while (i < count_i) { xml->put_I(i); rdf_Description_rdf_about = xml->chilkatPath("rdf:RDF|rdf:Description[i]|(rdf:about)"); rdf_Description_xmlns_xmpPLUS = xml->chilkatPath("rdf:RDF|rdf:Description[i]|(xmlns:xmpPLUS)"); rdf_Description_xmlns_Iptc4xmpCore = xml->chilkatPath("rdf:RDF|rdf:Description[i]|(xmlns:Iptc4xmpCore)"); rdf_Description_xmlns_exif = xml->chilkatPath("rdf:RDF|rdf:Description[i]|(xmlns:exif)"); rdf_Description_xmlns_pdf = xml->chilkatPath("rdf:RDF|rdf:Description[i]|(xmlns:pdf)"); rdf_Description_xmlns_photoshop = xml->chilkatPath("rdf:RDF|rdf:Description[i]|(xmlns:photoshop)"); rdf_Description_xmlns_tiff = xml->chilkatPath("rdf:RDF|rdf:Description[i]|(xmlns:tiff)"); rdf_Description_xmlns_xap = xml->chilkatPath("rdf:RDF|rdf:Description[i]|(xmlns:xap)"); rdf_Description_xmlns_stRef = xml->chilkatPath("rdf:RDF|rdf:Description[i]|(xmlns:stRef)"); rdf_Description_xmlns_xapMM = xml->chilkatPath("rdf:RDF|rdf:Description[i]|(xmlns:xapMM)"); rdf_Description_xmlns_xapRights = xml->chilkatPath("rdf:RDF|rdf:Description[i]|(xmlns:xapRights)"); rdf_Description_xmlns_dc = xml->chilkatPath("rdf:RDF|rdf:Description[i]|(xmlns:dc)"); xmpPLUS_CreditLineReq = xml->getChildContent("rdf:RDF|rdf:Description[i]|xmpPLUS:CreditLineReq"); xmpPLUS_ReuseAllowed = xml->getChildContent("rdf:RDF|rdf:Description[i]|xmpPLUS:ReuseAllowed"); Iptc4xmpCore_IntellectualGenre = xml->getChildContent("rdf:RDF|rdf:Description[i]|Iptc4xmpCore:IntellectualGenre"); Iptc4xmpCore_Location = xml->getChildContent("rdf:RDF|rdf:Description[i]|Iptc4xmpCore:Location"); Iptc4xmpCore_CountryCode = xml->getChildContent("rdf:RDF|rdf:Description[i]|Iptc4xmpCore:CountryCode"); Iptc4xmpCore_CreatorContactInfo_rdf_parseType = xml->chilkatPath("rdf:RDF|rdf:Description[i]|Iptc4xmpCore:CreatorContactInfo|(rdf:parseType)"); Iptc4xmpCore_CiAdrExtadr = xml->getChildContent("rdf:RDF|rdf:Description[i]|Iptc4xmpCore:CreatorContactInfo|Iptc4xmpCore:CiAdrExtadr"); Iptc4xmpCore_CiAdrCity = xml->getChildContent("rdf:RDF|rdf:Description[i]|Iptc4xmpCore:CreatorContactInfo|Iptc4xmpCore:CiAdrCity"); Iptc4xmpCore_CiAdrRegion = xml->getChildContent("rdf:RDF|rdf:Description[i]|Iptc4xmpCore:CreatorContactInfo|Iptc4xmpCore:CiAdrRegion"); Iptc4xmpCore_CiAdrPcode = xml->GetChildIntValue("rdf:RDF|rdf:Description[i]|Iptc4xmpCore:CreatorContactInfo|Iptc4xmpCore:CiAdrPcode"); Iptc4xmpCore_CiAdrCtry = xml->getChildContent("rdf:RDF|rdf:Description[i]|Iptc4xmpCore:CreatorContactInfo|Iptc4xmpCore:CiAdrCtry"); Iptc4xmpCore_CiTelWork = xml->getChildContent("rdf:RDF|rdf:Description[i]|Iptc4xmpCore:CreatorContactInfo|Iptc4xmpCore:CiTelWork"); Iptc4xmpCore_CiEmailWork = xml->getChildContent("rdf:RDF|rdf:Description[i]|Iptc4xmpCore:CreatorContactInfo|Iptc4xmpCore:CiEmailWork"); Iptc4xmpCore_CiUrlWork = xml->getChildContent("rdf:RDF|rdf:Description[i]|Iptc4xmpCore:CreatorContactInfo|Iptc4xmpCore:CiUrlWork"); rdf_li = xml->GetChildIntValue("rdf:RDF|rdf:Description[i]|Iptc4xmpCore:SubjectCode|rdf:Bag|rdf:li"); rdf_li = xml->GetChildIntValue("rdf:RDF|rdf:Description[i]|Iptc4xmpCore:Scene|rdf:Bag|rdf:li"); exif_ColorSpace = xml->GetChildIntValue("rdf:RDF|rdf:Description[i]|exif:ColorSpace"); exif_PixelXDimension = xml->GetChildIntValue("rdf:RDF|rdf:Description[i]|exif:PixelXDimension"); exif_PixelYDimension = xml->GetChildIntValue("rdf:RDF|rdf:Description[i]|exif:PixelYDimension"); photoshop_AuthorsPosition = xml->getChildContent("rdf:RDF|rdf:Description[i]|photoshop:AuthorsPosition"); photoshop_Headline = xml->getChildContent("rdf:RDF|rdf:Description[i]|photoshop:Headline"); photoshop_CaptionWriter = xml->getChildContent("rdf:RDF|rdf:Description[i]|photoshop:CaptionWriter"); photoshop_DateCreated = xml->getChildContent("rdf:RDF|rdf:Description[i]|photoshop:DateCreated"); photoshop_City = xml->getChildContent("rdf:RDF|rdf:Description[i]|photoshop:City"); photoshop_State = xml->getChildContent("rdf:RDF|rdf:Description[i]|photoshop:State"); photoshop_Country = xml->getChildContent("rdf:RDF|rdf:Description[i]|photoshop:Country"); photoshop_TransmissionReference = xml->getChildContent("rdf:RDF|rdf:Description[i]|photoshop:TransmissionReference"); photoshop_Instructions = xml->getChildContent("rdf:RDF|rdf:Description[i]|photoshop:Instructions"); photoshop_Credit = xml->getChildContent("rdf:RDF|rdf:Description[i]|photoshop:Credit"); photoshop_Source = xml->getChildContent("rdf:RDF|rdf:Description[i]|photoshop:Source"); tiff_XResolution = xml->getChildContent("rdf:RDF|rdf:Description[i]|tiff:XResolution"); tiff_YResolution = xml->getChildContent("rdf:RDF|rdf:Description[i]|tiff:YResolution"); tiff_ResolutionUnit = xml->GetChildIntValue("rdf:RDF|rdf:Description[i]|tiff:ResolutionUnit"); tiff_Orientation = xml->GetChildIntValue("rdf:RDF|rdf:Description[i]|tiff:Orientation"); xap_CreateDate = xml->getChildContent("rdf:RDF|rdf:Description[i]|xap:CreateDate"); xap_ModifyDate = xml->getChildContent("rdf:RDF|rdf:Description[i]|xap:ModifyDate"); xap_MetadataDate = xml->getChildContent("rdf:RDF|rdf:Description[i]|xap:MetadataDate"); xap_CreatorTool = xml->getChildContent("rdf:RDF|rdf:Description[i]|xap:CreatorTool"); xapMM_DerivedFrom_rdf_parseType = xml->chilkatPath("rdf:RDF|rdf:Description[i]|xapMM:DerivedFrom|(rdf:parseType)"); stRef_instanceID = xml->getChildContent("rdf:RDF|rdf:Description[i]|xapMM:DerivedFrom|stRef:instanceID"); stRef_documentID = xml->getChildContent("rdf:RDF|rdf:Description[i]|xapMM:DerivedFrom|stRef:documentID"); xapMM_DocumentID = xml->getChildContent("rdf:RDF|rdf:Description[i]|xapMM:DocumentID"); xapRights_Marked = xml->getChildContent("rdf:RDF|rdf:Description[i]|xapRights:Marked"); xapRights_WebStatement = xml->getChildContent("rdf:RDF|rdf:Description[i]|xapRights:WebStatement"); rdf_li_xml_lang = xml->chilkatPath("rdf:RDF|rdf:Description[i]|xapRights:RightsUsageTerms|rdf:Alt|rdf:li|(xml:lang)"); strRdf_li = xml->getChildContent("rdf:RDF|rdf:Description[i]|xapRights:RightsUsageTerms|rdf:Alt|rdf:li"); rdf_li_xml_lang = xml->chilkatPath("rdf:RDF|rdf:Description[i]|xapRights:UsageTerms|rdf:Alt|rdf:li|(xml:lang)"); strRdf_li = xml->getChildContent("rdf:RDF|rdf:Description[i]|xapRights:UsageTerms|rdf:Alt|rdf:li"); dc_format = xml->getChildContent("rdf:RDF|rdf:Description[i]|dc:format"); rdf_li_xml_lang = xml->chilkatPath("rdf:RDF|rdf:Description[i]|dc:description|rdf:Alt|rdf:li|(xml:lang)"); strRdf_li = xml->getChildContent("rdf:RDF|rdf:Description[i]|dc:description|rdf:Alt|rdf:li"); rdf_li_xml_lang = xml->chilkatPath("rdf:RDF|rdf:Description[i]|dc:title|rdf:Alt|rdf:li|(xml:lang)"); strRdf_li = xml->getChildContent("rdf:RDF|rdf:Description[i]|dc:title|rdf:Alt|rdf:li"); rdf_li_xml_lang = xml->chilkatPath("rdf:RDF|rdf:Description[i]|dc:rights|rdf:Alt|rdf:li|(xml:lang)"); strRdf_li = xml->getChildContent("rdf:RDF|rdf:Description[i]|dc:rights|rdf:Alt|rdf:li"); strRdf_li = xml->getChildContent("rdf:RDF|rdf:Description[i]|dc:creator|rdf:Seq|rdf:li"); j = 0; count_j = xml->NumChildrenHavingTag("rdf:RDF|rdf:Description[i]|dc:subject|rdf:Bag|rdf:li"); while (j < count_j) { xml->put_J(j); strRdf_li = xml->getChildContent("rdf:RDF|rdf:Description[i]|dc:subject|rdf:Bag|rdf:li[j]"); j = j + 1; } i = i + 1; } delete xml; } |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.