use PDL; use PDL::Image2D; use PDL::IO::GD; my $data_pdl; #a pdl(289,145) my $interpolated_pdl = zeroes(21600,10800); bilin2n($interpolated_pdl,$data_pdl); my $range1 = ( $x >= 5 ) * ( $x < 10 ); my $range2 = ( $x >= 10 ) * ( $x < 15 ); my $range3 = $x >= 15; my $plotted_pdl = ( $range1 + 2 * $range2 + 3 * $range3 )-> byte; my $palette = byte [ [ 0, 0, 0 ], [ 255, 0, 0 ], [ 0, 255, 0 ], [ 0, 0, 255 ] ]; my $plotted_image = PDL::IO::Image->new_from_pdl($plotted_pdl,$pallete); my $gd_image=PDL::IO::GD->new(pdl=>$plotted_image->pixels_to_pdl); #now all kinds of GD operations can be applied.