layer_apply - Apply a perl expression to every layer of the image


<Image>/Filters/Generic/Apply Perl Expression...


Runs a perl expression for each layer of an image. The perl expression can use the following variables:


The image.

$d ("drawable")

The current drawable (currently always a layer).

$i, $I ("index")

The index of the current layer. $i counts from 0 to $n-1, i.e. from top to the bottom of the stack with layer #0 being the top of the stack.

$I counts "backwards", i.e. from $n-1 to 0, so layer 0 is at the bottom.

$p, $P ("percent")

Similar to $i, but counts from 0 to 1 (inclusive). $p is equivalent to $i/($n-1) and $P is equivalent to $I/($n-1).

$n ("number of frames")

The number of layers in the image.

$d2 ("drawable")

The drawable2 argument, entirely optional and can be used for anything you like.


The following expression will gradually fade out an animation.

 $d->brightness_contrast ($P * 127, 0);

This little script can be used to merge two animations, $d2 should point to another animation with the same number of frames (only the image is of concern). It does it by copying each frame of the other animation onto the corresponding frame in the current animation and using DARKEN_MODE to combine the frames. You might want to use other modes or maybe $f-set_opacity(50)> for your animation.




 [PF_TEXT, "expr", "Perl expression to run for each layer",
 [PF_DRAWABLE, "d2", "Optional extra drawable if your code needs it"],




Marc Lehmann <>




Marc Lehmann <>

Distributed under the same terms as Gimp-Perl.