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
(PowerShell) Extract XMP MetaData as XMLDemonstrates how to open a JPG or TIF image file and extract the XMP metadata as XML.
Add-Type -Path "C:\chilkat\ChilkatDotNet47-9.5.0-x64\ChilkatDotNet47.dll" # This requires the Chilkat API to have been previously unlocked. # See Global Unlock Sample for sample code. $xmp = New-Object Chilkat.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 $success = $xmp.LoadAppFile("qa_data/xmp/sample1.jpg") if ($success -ne $true) { $($xmp.LastErrorText) exit } $("Num embedded XMP docs: " + $xmp.NumEmbedded) # Assuming there is at least one, get the 1st. # (There is typically never more than one, but theoretically it's possible.) $xml = $xmp.GetEmbedded(0) if ($xmp.LastMethodSuccess -eq $false) { $("No XMP metadata found.") exit } $($xml.GetXml()) # 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 $x_xmpmeta_xmlns_x = $xml.GetAttrValue("xmlns:x") $x_xmpmeta_x_xmptk = $xml.GetAttrValue("x:xmptk") $rdf_RDF_xmlns_rdf = $xml.ChilkatPath("rdf:RDF|(xmlns:rdf)") $rdf_RDF_xmlns_iX = $xml.ChilkatPath("rdf:RDF|(xmlns:iX)") $i = 0 $count_i = $xml.NumChildrenHavingTag("rdf:RDF|rdf:Description") while ($i -lt $count_i) { $xml.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 -lt $count_j) { $xml.J = $j $strRdf_li = $xml.GetChildContent("rdf:RDF|rdf:Description[i]|dc:subject|rdf:Bag|rdf:li[j]") $j = $j + 1 } $i = $i + 1 } |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.