Zig
Zig
Get a Structure Property Value from XMP
See more XMP Examples
Demonstrates how to open a JPG or TIF image file, access the XMP metadata, and fetch the value of a structure property, such as the Iptc4xmpCore:CiTelWork (found within the Iptc4xmpCore:CreatorContactInfo structure).Chilkat Zig Downloads
const std = @import("std");
const chilkat = @import("chilkat");
pub fn main(init: std.process.Init) !void {
const alloc = init.arena.allocator();
// This requires the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
const xmp = try chilkat.Xmp.init();
defer xmp.deinit();
// 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
xmp.loadAppFile("sample1.jpg") catch {
std.debug.print("{s}\n", .{try xmp.getLastErrorText(alloc)});
return;
};
std.debug.print("Num embedded XMP docs: {d}\n", .{xmp.getNumEmbedded()});
// Assuming there is at least one, get the 1st.
// (There is typically never more than one, but theoretically it's possible.)
if (xmp.getEmbedded(0)) |xml| {
defer xml.deinit();
const prop_val = xmp.getStructValue(alloc, xml, "Iptc4xmpCore:CreatorContactInfo", "Iptc4xmpCore:CiTelWork") catch "";
if (!xmp.getLastMethodSuccess()) {
std.debug.print("Not found.\n", .{});
} else {
std.debug.print("{s}\n", .{prop_val});
}
} else |_| {
std.debug.print("{s}\n", .{try xmp.getLastErrorText(alloc)});
}
}