Sample code for 30+ languages & platforms
Delphi ActiveX

Update a String Property in XMP

See more XMP Examples

Demonstrates how to open a JPG or TIF image file, access the XMP metadata, and update the value of a string property. (If the string property does not already exist, it is created.)

Chilkat Delphi ActiveX Downloads

Delphi ActiveX
uses
    Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
    Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Chilkat_TLB;

...

procedure TForm1.Button1Click(Sender: TObject);
var
success: Integer;
xmp: TChilkatXmp;
xml: IChilkatXml;

begin
success := 0;

// This example assumes the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.

xmp := TChilkatXmp.Create(Self);

// Load a JPG or TIF image file.
success := xmp.LoadAppFile('qa_data/xmp/AJ_123642_1511.tif');
if (success <> 1) then
  begin
    Memo1.Lines.Add(xmp.LastErrorText);
    Exit;
  end;

Memo1.Lines.Add('Num embedded XMP docs: ' + IntToStr(xmp.NumEmbedded));

// This example assumes that XMP metadata is already present in the image file.
if (xmp.NumEmbedded = 0) then
  begin
    Memo1.Lines.Add('No XMP metadata already exists..');
    Exit;
  end;

// Get the XMP metadata.

xml := xmp.GetEmbedded(0);

// Show the XML:
Memo1.Lines.Add(xml.GetXml());

// Update (overwrite) a string property.
xmp.AddSimpleStr(xml,'NumberofTimes','123');

success := xmp.SaveAppFile('qa_output/updated.tif');
if (success <> 1) then
  begin
    Memo1.Lines.Add(xmp.LastErrorText);
    Exit;
  end;

Memo1.Lines.Add('Success.');
end;