PureBasic
PureBasic
XMP Array Property - Bag, Seq, or Alt
See more XMP Examples
How to insert or update an XMP array property (bag, seq, or alt).Chilkat PureBasic Downloads
IncludeFile "CkXml.pb"
IncludeFile "CkXmp.pb"
IncludeFile "CkStringArray.pb"
Procedure ChilkatExample()
success.i = 0
; This requires the Chilkat API to have been previously unlocked.
; See Global Unlock Sample for sample code.
xmp.i = CkXmp::ckCreate()
If xmp.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
; Load a JPG or TIF image file.
; Sample JPG's with XMP metadata may be found at:
; http://www.chilkatsoft.com/testData/xmp/sample1.jpg
; http://www.chilkatsoft.com/testData/xmp/sample2.jpg
; http://www.chilkatsoft.com/testData/xmp/sample3.jpg
success = CkXmp::ckLoadAppFile(xmp,"sample1.jpg")
If success <> 1
Debug CkXmp::ckLastErrorText(xmp)
CkXmp::ckDispose(xmp)
ProcedureReturn
EndIf
Debug "Num embedded XMP docs: " + Str(CkXmp::ckNumEmbedded(xmp))
; Assuming there is at least one, get the 1st.
; (There is typically never more than one, but theoretically it's possible.)
xml.i
xml = CkXmp::ckGetEmbedded(xmp,0)
If CkXmp::ckLastMethodSuccess(xmp) = 1
; Create an object to hold one or more string values.
sa.i = CkStringArray::ckCreate()
If sa.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
success = CkStringArray::ckAppend(sa,"value_1")
success = CkStringArray::ckAppend(sa,"value_2")
; ...
success = CkXmp::ckAddArray(xmp,xml,"bag","Iptc4xmpCore:Chilkat",sa)
If success <> 1
Debug CkXmp::ckLastErrorText(xmp)
Else
; Save the JPG.
success = CkXmp::ckSaveAppFile(xmp,"modified.jpg")
If success <> 1
Debug CkXmp::ckLastErrorText(xmp)
EndIf
EndIf
CkXml::ckDispose(xml)
Else
Debug CkXmp::ckLastErrorText(xmp)
EndIf
CkXmp::ckDispose(xmp)
CkStringArray::ckDispose(sa)
ProcedureReturn
EndProcedure