#!/usr/bin/perl use 5.014; my ($file, $size) = @ARGV; my @info = eval { require Image::ExifTool; my $exif = Image::ExifTool->new->ImageInfo($file); return ( " $exif->{MIMEType}", $exif->{ImageSize} ? " $exif->{ImageSize} ($exif->{Megapixels}MP)" : (), $exif->{ColorType} ? " $exif->{BitDepth}bpp $exif->{ColorType}" : (), ); } or warn $@; open my $pgm, '-|', convert => ( -compress => 'none', '+distort' => SRT => '0,0 1,.56 0', -thumbnail => $size || '66x23', $file => 'pgm:-' ) or die $!; <$pgm> eq "P2\n" or do { say for @info; exit 1; }; <$pgm>; <$pgm>; # ignore depth, dimensions my @ch = split //, " .:coO@"; while (<$pgm>) { print $ch[ $_ * @ch >> 8 ] for /\d+/g; print $info[$. - 4], $/; }