Listing 3. MonkeyIQGimp Saving Functions #!/usr/bin/perl package MonkeyIQGIMP; use Gimp ":auto"; use Gimp::Fu; require Exporter; ... sub imageOutput { my( $img, $outfilename ) = @_; if( $outfilename =~ ".xcf" ) { print "Save to xcf file $outfilename\n"; Gimp->xcf_save( 0, $img, 0, $outfilename, $outfilename ); } else { $layer = getMergedLayer( $img ); Gimp->file_save( $img, $layer, $outfilename, $outfilename ); } Gimp->image_delete( $img ); } sub getMergedLayer { my( $img ) = @_; my $existinglayer = Gimp->image_get_active_layer($img); @layers = Gimp->image_get_layers( $img ); print "layers size:" . $#layers . "\n"; if( $#layers <= 1 ) { $layer = Gimp->image_get_active_layer($img); } else { $layer = Gimp->image_merge_visible_layers( $img, 1 ); } if( $layer == 0 ) { print "Creating a new layer to merge in\n"; $newlayer = Gimp->layer_new( $img, Gimp->image_width( $img ), Gimp->image_height( $img ), $existinglayer->type(), "trans merge layer", 100, NORMAL_MODE ); Gimp->image_add_layer( $img, $newlayer, -1 ); Gimp->edit_fill( $newlayer, TRANS_IMAGE_FILL); $layer = Gimp->image_merge_visible_layers( $img, 1 ); } return $layer; }