my $W = 100; my $H = 100; # $result is a 1D array of rgb values for $Wx$H # rgb values may actually be ARGB or RGBA etc. but I can transform # this to suit a module my $imager = Imager-> new( xsize => $W, ysize => $H, channels => 3, ) or die "called to Imager-> new() has failed."; for my $x (0..$W){ for my $y (0..$H){ my $rgb = $result->[$x + $y * $W]; next unless defined $rgb; # ARGB here, or any other scheme my $R = ($rgb & 0x00FF0000) >> 16; my $G = ($rgb & 0x0000FF00) >> 8; my $B = ($rgb & 0x000000FF); $imager->setpixel(x=>$x, y=>$y, color => [$R, $G, $B]); } } $imager-> write(file => 'out.png', type=>'png')