Delphi DLL
Delphi DLL
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 Delphi DLL Downloads
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Xmp, StringArray, Xml;
...
procedure TForm1.Button1Click(Sender: TObject);
var
success: Boolean;
xmp: HCkXmp;
xml: HCkXml;
sa: HCkStringArray;
begin
success := False;
// This requires the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
xmp := CkXmp_Create();
// 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_LoadAppFile(xmp,'sample1.jpg');
if (success <> True) then
begin
Memo1.Lines.Add(CkXmp__lastErrorText(xmp));
Exit;
end;
Memo1.Lines.Add('Num embedded XMP docs: ' + IntToStr(CkXmp_getNumEmbedded(xmp)));
// Assuming there is at least one, get the 1st.
// (There is typically never more than one, but theoretically it's possible.)
xml := CkXmp_GetEmbedded(xmp,0);
if (CkXmp_getLastMethodSuccess(xmp) = True) then
begin
// Create an object to hold one or more string values.
sa := CkStringArray_Create();
success := CkStringArray_Append(sa,'value_1');
success := CkStringArray_Append(sa,'value_2');
// ...
success := CkXmp_AddArray(xmp,xml,'bag','Iptc4xmpCore:Chilkat',sa);
if (success <> True) then
begin
Memo1.Lines.Add(CkXmp__lastErrorText(xmp));
end
else
begin
// Save the JPG.
success := CkXmp_SaveAppFile(xmp,'modified.jpg');
if (success <> True) then
begin
Memo1.Lines.Add(CkXmp__lastErrorText(xmp));
end;
end;
CkXml_Dispose(xml);
end
else
begin
Memo1.Lines.Add(CkXmp__lastErrorText(xmp));
end;
CkXmp_Dispose(xmp);
CkStringArray_Dispose(sa);
end;