Listing 14. Get the metadata from an image for use in PHP.

...
use MonkeyIQGIMP;
use FileHandle;

sub writedata {
  my( $fh, $name, $ext, $x, $y, $w, $h ) = @_;

  $fh->print(" \$${name}${ext}_width = $w;\n ");
  $fh->print(" \$${name}${ext}_height = $h;\n ");
  $fh->print(" \$${name}${ext}_left = $x;\n ");
  $fh->print(" \$${name}${ext}_top = $y;\n ");
  $fh->print(" \$${name}${ext}_offsetx = $x;\n ");
  $fh->print(" \$${name}${ext}_offsety = $y;\n ");
}

sub monkeyiq_gimp_get_dimension {
  my($inputimagename,$outfilename,
    $desiredlayername) = @_;

  $img = gimp_file_load( $inputimagename,
                         $inputimagename );

  if( length( $desiredlayername ) )
    {
      $layer = getLayerByName(
         $img, $desiredlayername )
       or die("Layer $desiredlayername not found");
    }
  else
    {
      $layer = getMergedLayer( $img );
    }

  $name = gimp_layer_get_name( $layer );
  my( $x, $y ) = gimp_drawable_offsets( $layer );
  $w = gimp_drawable_width( $layer );
  $h = gimp_drawable_height( $layer );

  $fh = new FileHandle;
  if( $fh->open( $outfilename, "w" ))
    {
      $fh->print("<?\n");
      writedata( $fh, $name, "", $x, $y, $w, $h );

      $fh->print("?>\n\n");
      $fh->close();
    }

  gimp_image_delete( $img );
}

register "monkeyiq_gimp_convert",
...
  [
   [PF_STRING, "inputimage",
      "Name of image to export", ""],
   [PF_STRING, "outputfile",
      "Name of file to save metadata into", ""],
   [PF_STRING, "inputlayer",
      "Name of layer to export (optional)", ""],
  ],
  \&monkeyiq_gimp_get_dimension;
...

