use strict; use warnings; use feature 'say'; use Data::Dump 'dd'; use Imager; my $i = Imager-> new( file => 'rose.png' ); my $w = $i-> getwidth; my $m = Imager::transform2( { rpnexpr => << 'END' x y getp1 !pix @pix red 128 le @pix blue 128 le and 255 0 if 0 0 rgb END }, $i )-> convert( preset => 'red' ); $m-> write( data => \my $data, type => 'raw' ); $data =~ tr/\0\377/01/; say for unpack "(a$w)*", $data; __END__ 11111111111111000000000011111100111 11111111111111000000000011111110111 11111111111111100000100001111110001 11111111111111110011011001111111111 11111111111110000000010000000110001 11111111111100000000000000000000000 11110001111000000000000000000000000 11110000000000000000000000000000000 11111000000000000000000000000000000 11111100000000000000000000000011100 11111100000000000000000000000010100 11110000000000000000000000000111111 11100000100000000000000000000111111 11100001100000000000000000001101111 11100001100000000000000000011011111 11111111000000000000000000011111111 11111111000000000000000010011111111 11111111100000001011001110011111111 11111100111000000011111110111111111 11111000010000000111111111111111111 11111000000000000111111111111111111 11111000000000000111111111111111111 11111000000000000011111111111111111