TPNGImage help

TPNGImage

Example 1: Reading textual chunks


Create a new form and insert an edit box, a listbox, a memo and a button. The edit box is supposed to receive the file name, the listbox will contain all the keywords for the textual chunks. The memo will contain the text for the selected keyword in the listbox. And finally the button will load the file and fill the listbox. Use the code bellow:


uses
  Forms, pngimage, StdCtrls, Classes, Controls;

TForm1 = class(TForm)
  Button1: TButton;
  ListBox1: TListBox;
  Memo1: TMemo;
  Edit1: TEdit;
  procedure Button1Click(Sender: TObject);
  procedure ListBox1Click(Sender: TObject);
public
 
png: TPngObject;
  constructor Create(AOwner: TComponent); override;
  destructor Destroy; override;
end;

{Form being created, create the png object}
constructor TForm1.Create(AOwner: TComponent);
begin
  inherited
Create(AOwner); 
 
png := tpngobject.create;
end;


{Form being destroyed, destroy the png object}
desstructor TForm1.Destroy;
begin
  inherited
Destroy; 
 
png.free;
end;


{User clicked on the button, load the file and fill list}
procedure TForm1.Button1Click(Sender: TObject);
var
 
i: Integer;
begin

  try
   
{Load the png file into the object}
   
png.LoadFromFile(Edit1.Text);
    {Clear the listbox}
    listbox1.items.clear;
    {Searches for all the chunks using the type TChunktEXt}
    {add these to the listbox and a pointer to the chunk}
    {Note that all textual chunks are descendent from TChunktEXt}

    for i := 0 to png.chunks.count - 1 do
      if
png.chunks.item[i] is TChunktEXt then
        listbox1.Items.AddObject(TChunktEXt(png.chunks.item[i]).keyword, png.chunks.item[i]);
  except
    {In case the image could not be loaded, show error}
    showmessage('The file could not be loaded.');
  end;
end;