Piet-Interpreter
view release on metacpan or search on metacpan
bin/gif2txt.pl view on Meta::CPAN
#!/usr/local/bin/perl -w
#
# Piet utility - converts images to human-readable text files
#
use strict;
use Image::Magick;
use Getopt::Std;
getopts('s:');
our($opt_s);
my $codel_size = $opt_s || 1;
my $infile = shift || die "must specify image file";
die "can't find file $infile" unless (-f $infile);
my $img = Image::Magick->new;
$img->Read(filename=>$infile);
my $cols = $img->Get('columns');
my $rows = $img->Get('rows');
print "# Image $infile: ($cols x $rows)\n";
my %hex2a = ( 'FFC0C0' => 'lR', 'FFFFC0' => 'lY', 'C0FFC0' => 'lG',
'C0FFFF' => 'lC', 'C0C0FF' => 'lB', 'FFC0FF' => 'lM',
'FF0000' => ' R', 'FFFF00' => ' Y', '00FF00' => ' G',
'00FFFF' => ' C', '0000FF' => ' B', 'FF00FF' => ' M',
'C00000' => 'dR', 'C0C000' => 'dY', '00C000' => 'dG',
'00C0C0' => 'dC', '0000C0' => 'dB', 'C000C0' => 'dM',
'FFFFFF' => 'Wt', '000000' => 'Bk',
);
my $j = 0;
while ($j<=($rows-1)) {
my $i = 0;
while ($i<=($cols-1)) {
my $color = $img->Get("pixel[$i,$j]");
my $hexcolor = HexColor($color);
print "$hex2a{$hexcolor} ";
$i += $codel_size;
}
print "\n";
$j += $codel_size;
}
###
sub HexColor {
my ($number, $hex);
(shift @_) =~ /^(\d+),(\d+),(\d+)/;
for $number ($1,$2,$3) {
$hex .= sprintf("%02X", $number/257);
}
return $hex;
}
( run in 1.969 second using v1.01-cache-2.11-cpan-a49fcb8fa48 )