http://www.perlmonks.org?node_id=760478


in reply to Creating transparent images using Imager

Imager's default combining mode is "none" - which replaces the target pixel, you can supply a fill object (or get Imager to make one) that uses the "normal" mode to get the transparency effect you're after:

use strict; use warnings; use Imager; my $img = Imager->new(xsize=>700, ysize => 500, channels => 4); # setting Imager::Color->new($red, $green, $blue, $alpha); my $blue = Imager::Color->new( 0, 0, 255, 255); my $red = Imager::Color->new( 255, 0, 0, 63); $img->box(color => $blue, xmin=>10, ymin=>30, xmax=>200, ymax=>300, filled=> 1); $img->box(fill => { solid => $red, combine => 'normal' }, xmin=>50, ymin=>80, xmax=>250, ymax=>350); $img->write(file => 'transbox.png') or die;