Sample code for 30+ languages & platforms
Lua

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 Lua Downloads

Lua
local chilkat = require("chilkat")

-- This requires the Chilkat API to have been previously unlocked.
-- See Global Unlock Sample for sample code.

local xmp = chilkat.Xmp.new()

-- 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
local success = xmp:load_app_file("sample1.jpg")
if not success then
    print(xmp.last_error_text)
    return
end

print("Num embedded XMP docs: " .. xmp.num_embedded)

-- Assuming there is at least one, get the 1st.
-- (There is typically never more than one, but theoretically it's possible.)
local xml = xmp:get_embedded(0)
if xmp.last_method_success then
    -- Create an object to hold one or more string values.
    local sa = chilkat.StringArray.new()
    success = sa:append("value_1")
    success = sa:append("value_2")
    -- ...

    success = xmp:add_array(xml, "bag", "Iptc4xmpCore:Chilkat", sa)
    if not success then
        print(xmp.last_error_text)
    else
        -- Save the JPG.
        success = xmp:save_app_file("modified.jpg")
        if not success then
            print(xmp.last_error_text)
        end
    end
else
    print(xmp.last_error_text)
end